class TestTag(): def setup_class(self): # 初始化Tag self.tag = Tag() # 拿到token self.tag.get_token() def test_tag_list(self): # 获取新列表 进行校验 r = self.tag.list() assert r.status_code == 200 assert r.json()['errcode'] == 0 #参数化 @pytest.mark.parametrize("group_name,tag_names",[ ["group_demo_leemandy2",[{'name': 'tag_demo_leemandy2'}]], ["group_demo_leemandy2",[{'name': 'tag_demo_leemandy2'}]], ["group_demo_leemandy2",[{'name': 'tag_demo_leemandy2'},{'name': 'tag_demo_leemandy3'}]], ]) def test_tag_add(self,group_name,tag_names): #增加标签组 r= self.tag.add(group_name, tag_names) assert r.status_code == 200 #python列表表达式 #校验 找taggroup下面有没有新建的groupname group=[group for group in r.json()['tag_group'] if group['group_name'] == group_name][0] #校验 找taggroup下tag下的name是不是我刚刚新建的 tags=[{'name':tag['name']} for tag in group['tag'] if tag['name']] print(group) print(tags) assert group['group_name'] == group_name assert tags == tag_names #tagname超过31个字符回会报错 def test_tag_fail(self): pass @pytest.mark.parametrize("",[ #删除单个标签 #删除多个标签 #删除不存在的标签 #删除标签组 ] ) def test_tag_delete(self,group_id,tag_id): self.tag.delete()
class TestTag: def setup_class(self): ##资源初始化 self.tag = Tag() self.tagid = '' self.group_id = 'etWtwhEQAAX_WVyJDmfF_Nx3nX2al-Og' def teardown_class(self): ##资源恢复 pass # # @pytest.mark.parametrize("tag_id,tag_name",[ # ['etWtwhEQAAUZvpV2eI58HtpYFSBR5nuQ','ukulele'] # ,['etWtwhEQAAUZvpV2eI58HtpYFSBR5nuQ','ukulele-中文'] # ,['etWtwhEQAAUZvpV2eI58HtpYFSBR5nuQ','ukulele- ']]) RESULT_LINK = 'https://github.com/yanli27/TestFramwork' @pytest.mark.parametrize("tag_id,tag_name", yaml.load(open('tag_par.yaml', 'r'), Loader=yaml.FullLoader)) @allure.story("测试tag的编辑") @allure.testcase(RESULT_LINK, '链接') @allure.title("测试tag的编辑") def test_tag_edit(self, tag_id, tag_name): tagname = tag_name + str( datetime.datetime.now().strftime("%Y%m%d%H%M")) print('tagname', tagname) group_name = 'uku group' id = tag_id # r=self.tag.list() with allure.step("更新tagname"): r = self.tag.update(id, tagname) with allure.step("列出更新后的tag列表"): r = self.tag.list() tags = [ tag for group in r.json()['tag_group'] if group['group_name'] == group_name for tag in group['tag'] if tag['name'] == tagname ] # print('tags',r.json()['tag_group']) with allure.step("判断是否更新成功"): assert tags != [] assert jsonpath( r.json(), f"$..[?(@.name=='{tagname}')]")[0]['name'] == tagname newTagname = str(jsonpath(r.json(), f"$..[?(@.name=='{tagname}')]")) allure.attach('插入txt:' + newTagname, 'tag', attachment_type=allure.attachment_type.TEXT) driver.get() @allure.story("测试tag的新增") def test_add_tag(self): group_name = 'uku group' tag1 = 'test add tag' + str( datetime.datetime.now().strftime("%Y%m%d%H%M")) tag2 = 'test add tag 2' + str( datetime.datetime.now().strftime("%Y%m%d%H%M")) tag3 = 'test add tag 3' + str( datetime.datetime.now().strftime("%Y%m%d%H%M")) tag = [ { "name": tag1 }, { "name": tag2 }, { "name": tag3 }, ] self.tag.add(groupname=group_name, tag=tag) @allure.story("列出所有tags") def test_list(self): self.tag.list() @allure.story("删除tag") def test_delete_tag(self): r = self.tag.list(self.group_id) tags = [ tag for group in r.json()['tag_group'] for tag in group['tag'] if tag['deleted'] is False ] print(tags) self.tagid = tags[0]['id'] # print(r.json()['tag_group'][0]['tag'][0]) self.tag.delete(self.tagid) @allure.story('删除group') def test_delete_group(self): self.tag.delete_group(["etWtwhEQAAsSp0ujrSGTqYKqyfvkoxXA"]) @allure.story('删除tag') def test_delete_tag(self): self.tag.delete_tag(["etWtwhEQAAvZrYlpgRWxYz2EClCL2jDg"])
class TestTag: update_index_class=0 def setup_class(self): # todo:数据清理的过程,把测试数据清空或者还原 # 还原数据库,如果可以还原数据库,那么测试用例中是可以使用一些变化的tagid。否则不要硬编码这些tagid,一旦数据被清空,tagid就会失效。 # 使用接口去清理数据 # 使用接口去构建测试数据 self.tag = Tag() self.tag.get_token() self.tag.clear_all() self.update_index = 0 print("update_index") print(self.update_index) def test_tag_list(self): # todo: 完善功能测试 r = self.tag.list() assert r.status_code == 200 assert r.json()['errcode'] == 0 @pytest.mark.parametrize("group_name, tag_names", [ ["group_demo_1201", [{'name': 'tag_demo_1201'}]], ["group_demo_1202", [{'name': 'tag_demo_1202'}, {'name': 'tag_demo_1203'}]], ]) def test_tag_add(self, group_name, tag_names): r = self.tag.add(group_name, tag_names) assert r.status_code == 200 # assert r.json()['errcode'] == 0 r = self.tag.list() assert r.status_code == 200 assert r.json()['errcode'] == 0 group = [group for group in r.json()['tag_group'] if group['group_name'] == group_name][0] tags = [{'name': tag['name']} for tag in group['tag']] print(group) print(tags) assert group['group_name'] == group_name assert tags == tag_names def test_tag_add_fail(self): pass @pytest.mark.parametrize("group_name, tag_names, need_group_id", [ # 删除有效的单个标签 ['group_delete_demo', [{'name': "tag_delete_demo_1"}], False], # 删除多个标签 ['group_delete_demo', [{'name': "tag_delete_demo_2", 'name': "tag_delete_demo_3"}], False], # 删除整个组 ['group_delete_demo', [{'name': 'tag_delete_demo_4'}], True], # 删除标签组,名字或者id ]) def test_tag_delete(self, group_name, tag_names, need_group_id): self.tag.add(group_name, tag_names) r = self.tag.list() group = [group for group in r.json()['tag_group'] if group['group_name'] == group_name][0] tag_ids = [tag['id'] for tag in group['tag']] if need_group_id: group_id = group['group_id'] tag_ids = None else: group_id = None self.tag.delete(group_id, tag_ids) r = self.tag.list() groups = [group for group in r.json()['tag_group'] if group['group_name'] == group_name] assert groups == [] @pytest.mark.parametrize("name", [ # 普通改名 加长 'tag_test_update_name_1', # 缩短 'tag_1', # 不变 'tag_test_update_name', # 重名 # 组名重名 # 特殊字符 ]) def test_update_name(self, name): self.update_index += 1 # doine: id一样 不要用实例变量就可以 print(f"update_index={self.update_index}") tag_name = 'tag_test_update_name_' + str(datetime.now())[-5:] tag = [{'name': tag_name}] self.tag.add("group_test_update_name", tag) r = self.tag.list() tag_id = jsonpath(r.json(), f'$..[?(@.name=="{tag_name}")].id')[0] r = self.tag.update(tag_id, name) assert r.json()['errcode'] == 0 r = self.tag.list() assert len(jsonpath(r.json(), f'$..[?(@.name=="{name}")].id')) == 1 @pytest.mark.parametrize("order_id", [ # [5,4,3,2,1] 标签/标签组的次序值。order值大的排序靠前。有效的值范围是[0, 2^32) ]) def test_update_order(self, order_id): pass def test_clear_all(self): r = self.tag.clear_all() assert len(r.json()['tag_group']) == 0 def setup(self): self.update_index += 1 @pytest.mark.parametrize('a', [1, 2, 3, 4, 5]) def test_demo(self, a): self.update_index += 1 TestTag.update_index_class+=1 print(f"update_index={self.update_index}") print(f"update_index_class={self.update_index_class}")