介面測試時依賴前置資料的問題解決了...
相信做過介面自動化測試的同學都有遇到過這樣的問題,就是測試的介面依賴於某些資料的存在才能正常執行。而這些前置資料的維護是非常麻煩的,我想到的大概有三種處理方式:
- 維護好測試環境中的資料,在執行測試前,保證介面依賴的資料在資料庫中都存在即可。
- 呼叫前置用例(方法)來實時造資料,比如登入時,先呼叫註冊介面來生成一個賬號。
- 直接往資料庫裡面插,登入時往使用者表插一條資料就好了。
這三種方式各有各的好,也有不好:
方法 1:
優點:
1. 簡單,測試用例只關注測試用例本身,不用管前置資料的問題;
缺點:
1. 資料維護是個問題,比較難維護。資料的增刪改都有可能造成用例不透過。
2. 用例維護問題,因為用例依賴的資料是固定現成的,在資料變化後用例程式碼都需要變方法 2:
優點: 資料真實,業務完整
缺點: 場景複雜時前置用例可能非常多,一個場景出問題可能導致後續用例都失敗(比如登入失敗了,那幾乎全部都會失敗)方法 3:
優點:簡單,直接,要什麼就插什麼
缺點:業務複雜時可能一個業務場景要在 N 張表中插入資料,得一個個處理。工作量大。比如:插入一個使用者資料,一般使用者資料會包括使用者賬號表,使用者角色表、使用者屬性表...
第四種方法
還是基於在資料庫中直接生成資料的這種方式,好在是可以透過配置檔案來描述資料庫表之間的關聯關係;支援批次插入多條有業務關聯的資料;使用者只需要在配置檔案中描述表欄位的生成規則以及表之間的關聯關係即可。
配置檔案模板可透過內建工具一鍵生成,生成後只需要完善欄位生成規則;
配置檔案示例如下:
package:
- datetime # 匯入額外的包,在jinja2模板中使用(下面有用到datetime包,所以要先匯入)
env:
id:
engine: faker.uuid
rule: null
time_format:
engine: faker.eq
rule:
value: "%Y-%m-%d %H:%M:%S"
tables:
- columns:
- column: id
comment: 資料主鍵id
engine: faker.eq
rule:
value: '{{ env.id }}' # 透過引用環境變數中的值
- column: name
comment: 姓名
engine: faker.name
rule: null
- column: idcard
comment: 身份證號
engine: faker.ssn
rule: null
- column: age
comment: 年齡
engine: faker.eq
rule:
value: '{{ datetime.datetime.now().year - int(stu.idcard[6:10]) }}' # 透過jinja2模板直接計算
- column: sex
comment: 性別
engine: faker.eq
rule:
value: '{{ "man" if int(stu.idcard[-2]) % 2==1 else "female" }}' # 透過jinja2模板直接計算
comment: ''
table: stu
- columns:
- column: id
comment: 資料主鍵id
engine: faker.uuid
rule: null
- column: stu_id
comment: 資料主鍵id
engine: faker.eq
rule:
value: '{{ stu.id }}' # 透過其他表中的值
- column: course_name
comment: 課程名稱
engine: faker.choice # 透過內建方法從列表中隨機取一個值
rule:
value: [數學,語文,英語,化學,地理]
- column: course_time
comment: 上課時間
engine: faker.now # 透過內建方法獲取當前時間,並按照指定格式返回
rule:
format: "{{ env.time_format }}"
comment: '課程資訊 '
table: course
具體安裝使用方法參考:dbfaker
相關文章
- Go etcd 的依賴問題終於解決了。。。Go
- python介面自動化測試之介面資料依賴Python
- 問題解決:嘗試解決maven依賴找不到的n種姿勢Maven
- [測試經驗] 依賴方介面呼叫測試
- 如何解決微服務之間的資料依賴問題?微服務
- Git Worktree:解決分支依賴衝突的問題Git
- 解決Maven中90%的依賴(導包)問題Maven
- 交叉編譯庫依賴問題的解決方法編譯
- 介面自動化測試:apiAutoTest使用re 處理資料依賴API
- 微服務之間的資料依賴問題,該如何解決?微服務
- 依賴衝突時的解決方法
- 介面自動化測試-apiAutoTest 優化之資料依賴處理API優化
- 依賴管理利器---Spring IO Platform解決Spring組合依賴問題實戰SpringPlatform
- JUnit5依賴注入與測試介面依賴注入
- 面試題:Spring 的迴圈依賴問題面試題Spring
- 介面自動化如何處理介面依賴問題
- 解決Android studio中gradle依賴下載太慢的問題AndroidGradle
- 微服務介面單測依賴問題一次性搞定微服務
- Spring 迴圈依賴的三種方式(三級快取解決Set迴圈依賴問題)Spring快取
- 解決 requests-2.17.3 依賴 chardet 庫版本不匹配的問題
- python 介面自動化 -- 依賴資料Python
- 解決npm 安裝部分依賴失敗問題總結NPM
- maven打包jar無法打入依賴專案問題解決MavenJAR
- 函式計算|如何使用層解決依賴包問題?函式
- composer依賴相關的問題和解決辦法
- Angular 依賴的測試和 FakeAngular
- 問題解決--npm install 安裝依賴一直失敗NPM
- 若依解決VUE前端時間顯示問題Vue前端
- springBoot依賴下載問題Spring Boot
- Ubuntu處理依賴問題Ubuntu
- 學完這篇依賴注入,與面試官扯皮就沒有問題了。依賴注入面試
- 資料庫連結時的時區問題serverTimezone永久解決資料庫Server
- spring解決迴圈依賴Spring
- 解決eclipse的maven依賴報錯EclipseMaven
- 研發了 5 年的時序資料庫,到底要解決什麼問題?資料庫
- 在maven專案中解決第三方jar包依賴的問題MavenJAR
- 關於效能測試時線上介面訪問比例的整理的問題
- 介面測試的時候如何生成隨機資料進行測試隨機