背景:
現在要將接口自動化測試結果持久化,當前只是每次運行接口測試,將測試結果通過郵件發送給項目組成員。郵件內容如下:
表設計:
為了呈現這個結果:我設計了2張表run_result和run_detail(testcase表是已經存在的)
- run_detail表:測試結果明細
- run_result表:測試結果
- testcase表:測試用例
表關系:
run_detail表中的多條記錄,對應run_result的1條記錄(多對一關系)
run_detail表中1條記錄,必定是屬於testcase表中的某1條case(一對一關系)
分析過程:
run_detail表與run_result表多對一關系
run_detail表通過字段result_id與run_result表產生關系。
run_detail表中的result_id與run_result表中的id值(主鍵)應當是多對一的關系。
run_detail表與testcase表一對一關系
run_detail表通過字段testcase_id與testcase表產生關系。
run_detail表中的testcase_id與testcase表中的id值(主鍵)應當是一對一的關系。
所以在run_detail表中要保證testcase_id值是唯一的。
配置方法:【mysql】一對一關系的理解,以及Navicat Premium怎么設置字段的唯一性(UNIQUE)?
要使表與表之間建立 多對一,一對一關系,需要通過外鍵
run_detail表字段設計:
通過navicat 為run_detail表設計外鍵:
名字可以隨便起
第2列字段取當前表中已經存在的字段
第5列參考字段,取與當前表有關系的表中的字段
設計外鍵之后的效果:
附上建表SQL語句:
run_result表:
CREATE TABLE `run_result` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵', `bad_api_num` int(10) NOT NULL COMMENT '異常接口數', `start_time` datetime NOT NULL COMMENT '開始時間', `end_time` datetime NOT NULL COMMENT '結束時間', `run_time` varchar(64) NOT NULL COMMENT '測試用時', `all_case` int(11) NOT NULL COMMENT '全部case', `pass_case` int(11) NOT NULL COMMENT '通過case', `fail_case` int(11) NOT NULL COMMENT '失敗case', `jump_case` int(11) NOT NULL COMMENT '未驗證case', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
run_detail表:
CREATE TABLE `run_detail` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵', `result_id` int(11) NOT NULL COMMENT 'run_result表外鍵 多(detail)對一(result)', `testcase_id` int(11) DEFAULT NULL COMMENT 'case編號 值唯一 testcase表外鍵 一(run_detail)對一(testcase) ', `code_state` char(8) DEFAULT NULL COMMENT '狀態碼(自定義2001表示斷言失敗,其它為測試接口返回真實狀態碼,如204)', `api_purpose` varchar(50) DEFAULT NULL COMMENT '接口描述', `request_url` varchar(100) DEFAULT NULL COMMENT '接口地址', `response` varchar(255) DEFAULT NULL COMMENT '接口返回值', `creater` varchar(50) DEFAULT NULL COMMENT '創建者', PRIMARY KEY (`id`), UNIQUE KEY `testcase_id` (`testcase_id`) USING BTREE, KEY `detail_result_bfk1` (`result_id`), CONSTRAINT `detail_result_bfk1` FOREIGN KEY (`result_id`) REFERENCES `run_result` (`id`), CONSTRAINT `detail_testcase_bfk2` FOREIGN KEY (`testcase_id`) REFERENCES `testcase` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;