介面測試時依賴前置資料的問題解決了...
相信做過介面自動化測試的同學都有遇到過這樣的問題,就是測試的介面依賴於某些資料的存在才能正常執行。而這些前置資料的維護是非常麻煩的,我想到的大概有三種處理方式:
- 維護好測試環境中的資料,在執行測試前,保證介面依賴的資料在資料庫中都存在即可。
- 呼叫前置用例(方法)來實時造資料,比如登入時,先呼叫註冊介面來生成一個賬號。
- 直接往資料庫裡面插,登入時往使用者表插一條資料就好了。
這三種方式各有各的好,也有不好:
方法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
相關文章
- python介面自動化測試之介面資料依賴Python
- Go etcd 的依賴問題終於解決了。。。Go
- [測試經驗] 依賴方介面呼叫測試
- 問題解決:嘗試解決maven依賴找不到的n種姿勢Maven
- Maven中解決依賴衝突的問題Maven
- 介面自動化測試:apiAutoTest使用re 處理資料依賴API
- 如何解決微服務之間的資料依賴問題?微服務
- JUnit5依賴注入與測試介面依賴注入
- 交叉編譯庫依賴問題的解決方法編譯
- 解決Maven中90%的依賴(導包)問題Maven
- 介面自動化測試-apiAutoTest 優化之資料依賴處理API優化
- 依賴衝突時的解決方法
- 微服務之間的資料依賴問題,該如何解決?微服務
- Git Worktree:解決分支依賴衝突的問題Git
- 介面自動化如何處理介面依賴問題
- 微服務介面單測依賴問題一次性搞定微服務
- 關於 OkHttp 依賴衝突問題的解決過程HTTP
- 依賴管理利器---Spring IO Platform解決Spring組合依賴問題實戰SpringPlatform
- 編譯OpenVPN及解決相關依賴問題編譯
- Angular 依賴的測試和 FakeAngular
- 解決 requests-2.17.3 依賴 chardet 庫版本不匹配的問題
- Spring 迴圈依賴的三種方式(三級快取解決Set迴圈依賴問題)Spring快取
- 解決npm 安裝部分依賴失敗問題總結NPM
- 函式計算|如何使用層解決依賴包問題?函式
- maven打包jar無法打入依賴專案問題解決MavenJAR
- python 介面自動化--依賴資料Python
- 介面測試的解決方案
- mysql 依賴包問題MySql
- composer依賴相關的問題和解決辦法
- 解決Android studio中gradle依賴下載太慢的問題AndroidGradle
- 關於效能測試時線上介面訪問比例的整理的問題
- 若依解決VUE前端時間顯示問題Vue前端
- 介面測試的時候如何生成隨機資料進行測試隨機
- 問題解決--npm install 安裝依賴一直失敗NPM
- 使用ReflectionTestUtils解決依賴注入依賴注入
- 軟體測試面試問題_介面測試(二)面試
- SAP Spartacus OccEndpointsService單元測試的依賴注入依賴注入
- 面試題:Spring 的迴圈依賴問題面試題Spring