1 @dataclass2 classClientTestLink:3 """
4 testlink二次封装5 """
6 user_api_pwd: str7 client_url: str = "http://你的testlink地址/testlink/lib/api/xmlrpc/v1/xmlrpc.php"
8
9 def __post_init__(self):10 self.tlc =TestlinkAPIClient(self.client_url, self.user_api_pwd)11
12 defget_projects(self):13 """获取testLink内所有项目"""
14 project_list =[]15 for project inself.tlc.getProjects():16 project_list.append([project.get("id"), project.get("name")])17 returnproject_list18
19 defget_project_id_by_name(self, project_name):20 """获取项目id根据项目名称"""
21 returnself.tlc.getProjectIDByName(project_name)22
23 defget_test_suites(self, project_id):24 """获取指定项目里(需要项目id)的测试用例集"""
25 test_suite_list =[]26 test_suites =self.tlc.getFirstLevelTestSuitesForTestProject(project_id)27 for test_suite intest_suites:28 test_suite_list.append([test_suite.get("id"), test_suite.get("name")])29 returntest_suite_list30
31 defget_test_suite_id(self, project_id, test_suite_name):32 """查询一级目录"""
33 all_suites =self.get_test_suites(project_id)34 for i inall_suites:35 if i[1] ==test_suite_name:36 returni[0]37 else:38 pass
39 returnFalse40
41 defget_test_suite_for_test_suite(self, test_suite_id):42 """查询用例集下是否含有某用例集"""
43 try:44 test_suite_id =self.tlc.getTestSuitesForTestSuite(test_suite_id)45 returntest_suite_id46 exceptException:47 returnFalse48
49 def create_test_suite(self, project_id: int, test_suite_name: str, parent_id: int =None):50 """判断是否拥有测试用例集,如果没有就创建测试用例集"""
51 suite_data = self.tlc.createTestSuite(project_id, test_suite_name, test_suite_name, parentid=parent_id)52 cheak_bool =isinstance(suite_data, list)53 ifcheak_bool:54 return suite_data[0].get("id")55 else:56 if parent_id isNone:57 return self.get_test_suite_id(project_id=project_id, test_suite_name=test_suite_name)58 else:59 for k, v inself.get_test_suite_for_test_suite(parent_id).items():60 ifisinstance(v, dict):61 if v.get("name") ==test_suite_name:62 return v.get("id")63 else:64 pass
65 else:66 return self.get_test_suite_for_test_suite(parent_id).get("id")67
68 defcreate_test_case(self, project_id: int, test_suite_id: int, test_case_name, summary, preconditions,69 step, result, author_login):70 """创建测试用例"""
71 self.tlc.initStep(step, result, 1)72 return self.tlc.createTestCase(testprojectid=project_id,73 testsuiteid=test_suite_id,74 testcasename=test_case_name,75 summary=summary,76 preconditions=preconditions,77 authorlogin=author_login78 )79
80 defupdate_project_keywords(self, project_id, test_case_id, keyword_value):81 """加关键字"""
82 test_case = self.tlc.getTestCase(testcaseid=test_case_id)[0]83 args ={84 'testprojectid': project_id,85 'testcaseexternalid': test_case['full_tc_external_id'],86 'version': int(test_case['version'])87 }88 keyword = self.tlc.addTestCaseKeywords({args['testcaseexternalid']: [keyword_value]})89 returnkeyword90
91 defupdate_custom_field(self, project_id, test_case_id, custom_fields: dict):92 """更新自定义字段"""
93 test_case = self.tlc.getTestCase(testcaseid=test_case_id)[0]94 args ={95 'testprojectid': project_id,96 'testcaseexternalid': test_case['full_tc_external_id'],97 'version': int(test_case['version'])98 }99 custom =self.tlc.updateTestCaseCustomFieldDesignValue(100 args['testcaseexternalid'], args['version'], args['testprojectid'], custom_fields)101 return custom