def test_projects(self,case): #准备数据 url=conf.get("env","url")+case["url"] method=case["method"] # 随机生成一个项目名称替换 name=self.random_name() setattr(EnvData,"name",name) data=eval(replace_data(case["data"])) headers = {"Authorization":self.token} excepted=eval(replace_data(case["expected"])) row_id=case["case_id"]+1 #发送请求 response=request(method=method,url=url,json=data,headers=headers) res=response.json() #断言 try: # 调用断言的方法进行断言 assert_dict(excepted,res) # 判断是否需要进行sql校验,如果有sql语句,需要去数据库查询一下是否有一条该项目的数据 if case["check_sql"]: sql = replace_data(case["check_sql"]) res_namecount = self.db.find_count(sql) self.assertEqual(1, res_namecount) except AssertionError as e: self.excel.wirte_excel(row=row_id, column=8, value="不通过") my_log.error("用例{},{},不通过".format(case["case_id"], case["title"])) my_log.debug("预期结果:{}".format(excepted)) my_log.debug("实际结果:{}".format(res)) my_log.exception(e) # exception将捕获到异常记录到日志中(对应的等级是error) # 主动抛出异常 raise e else: self.excel.wirte_excel(row=row_id, column=8, value="通过") my_log.info("用例{},{},通过".format(case["case_id"], case["title"]))
def test_name_email_exist(self, case): # 准备数据 # 随机生成一个用户名,保存为类属性 username = self.random_username() setattr(EnvData, "username", username) # 随机生成一个email,保存为类属性 email = self.random_email() setattr(EnvData, "email", email) url = conf.get("env", "url") + replace_data(case["url"]) method = case["method"] # 随机生成的用户名去数据库查询,如果能查到count为1.否则为0,然后替换掉expected中的count if case["check_sql"]: sql = replace_data(case["check_sql"]) namecount = self.db.find_count(sql) if namecount == 0: count = 0 setattr(EnvData, "count", str(count)) else: count = 1 setattr(EnvData, "count", str(count)) # 注册成功的预期结果比对了username,这个username是随机生成的,所以设置了动态参数获取 case["expected"] = replace_data(case["expected"]) excepted = eval(case["expected"]) row_id = case["case_id"] + 1 # 发送请求 response = request(method=method, url=url) res = response.json() # 断言 try: # 调用断言的方法进行断言 assert_dict(excepted, res) except AssertionError as e: self.excel.wirte_excel(row=row_id, column=7, value="不通过") my_log.error("用例{},{},不通过".format(case["case_id"], case["title"])) my_log.debug("预期结果:{}".format(excepted)) my_log.debug("实际结果:{}".format(res)) my_log.exception(e) # exception将捕获到异常记录到日志中(对应的等级是error) # 主动抛出异常 raise e else: self.excel.wirte_excel(row=row_id, column=7, value="通过") my_log.info("用例{},{},通过".format(case["case_id"], case["title"]))
def test_register_login(self, case): # 准备数据 url = conf.get("env", "url") + case["url"] method = case["method"] # 随机生成一个用户名和邮箱,保存为类属性 username = self.random_username() email = self.random_email() # 登录成功的用例直接用上一条注册成功的用户名登录,登录成功的那条用例不需要新生成用户名 if case["title"] != "登录成功": setattr(EnvData, "username", username) setattr(EnvData, "email", email) case["data"] = replace_data(case["data"]) data = eval(case["data"]) # 注册成功的预期结果比对了username,这个username是随机生成的,所以设置了动态参数获取 case["expected"] = replace_data(case["expected"]) excepted = eval(case["expected"]) row_id = case["case_id"] + 1 # 发送请求 response = request(method=method, url=url, json=data) res = response.json() # 断言 try: # 调用断言的方法进行断言 assert_dict(excepted, res) # 判断是否需要进行sql校验,如果有sql语句,需要去数据库查询一下是否有一条该用户名的数据 if case["check_sql"]: sql = replace_data(case["check_sql"]) res_namecount = self.db.find_count(sql) self.assertEqual(1, res_namecount) except AssertionError as e: self.excel.wirte_excel(row=row_id, column=8, value="不通过") my_log.error("用例{},{},不通过".format(case["case_id"], case["title"])) my_log.debug("预期结果:{}".format(excepted)) my_log.debug("实际结果:{}".format(res)) my_log.exception(e) # exception将捕获到异常记录到日志中(对应的等级是error) # 主动抛出异常 raise e else: self.excel.wirte_excel(row=row_id, column=8, value="通过") my_log.info("用例{},{},通过".format(case["case_id"], case["title"]))
class Test_Login(): # @pytest.mark.skip # @pytest.mark.goodno @pytest.mark.parametrize("case", LoginCase.success_data) def test_login_pass(self, case, login_fixture): login_page, index_page = login_fixture # 传入参数登录 login_page.login(case["mobile"], case["pwd"]) # 断言是否进入首页 res = index_page.get_info() try: assert case["excepted"] == res except AssertionError as e: my_log.error("用例----{}---不通过".format(case["title"])) my_log.exception(e) raise e else: my_log.error("用例----{}---通过".format(case["title"])) # 退出 index_page.exit()
res = index_page.get_info() try: assert case["excepted"] == res except AssertionError as e: my_log.error("用例----{}---不通过".format(case["title"])) my_log.exception(e) raise e else: my_log.error("用例----{}---通过".format(case["title"])) # 退出 index_page.exit() # @pytest.mark.goodno @pytest.mark.parametrize("case", LoginCase.error_data) def test_login_fail(self, case, login_fixture): login_page, index_page = login_fixture # 刷新页面 login_page.refresh() # 传入参数登录 login_page.login(case["mobile"], case["pwd"]) # 断言错误提示是否一致 res = login_page.login_error_info() try: assert case["excepted"] == res except AssertionError as e: my_log.error("用例----{}---不通过".format(case["title"])) my_log.exception(e) raise e else: my_log.error("用例----{}---通过".format(case["title"]))