def test_login(): # 3、定义测试数据 conf_y = ConfigYaml() url_path = conf_y.get_conf_url() url = url_path + "/authorizations/" # url = "http://211.103.136.242:8064/authorizations/" data = {"username": "******", "password": "******"} # 4、发送POST请求 # r = requests.post(url,json=data) # r = requests_post(url,json=data) request = Request() r = request.post(url, json=data) # 5、输出结果 # print(r.json()) print(r) # 返回状态码 code = r['code'] AssertUtil().assert_code(code, 200) body = r['body'] # print(body) AssertUtil().assert_in_body(body, '"username": "******"') # 1、初始化数据库对象 conn = init_db('db_1') # 2、查询结果 res_db = conn.fetchone("select id from tb_users where username='******'") print("数据库查询结果:", res_db) # 3、验证 user_id = body['user_id'] assert user_id == res_db['id']
def run_pre(self, pre_case): """初始化数据""" url = ConfigYaml().get_conf_url() + pre_case[data_key.url] method = pre_case[data_key.method] params_type = pre_case[data_key.params_type] params = pre_case[data_key.params] expect_result = pre_case[data_key.expect_result] headers = pre_case[data_key.headers] cooikes = pre_case[data_key.cookies] # 判断header是否存在,json转义 # if headers: # header = json.loads(headers) # else: # header = headers header = Base.json_parse(headers) # 判断cooikes是否存在,json转义 # if cooikes: # cooike = json.loads(cooikes) # else: # cooike = cooikes cooikes = Base.json_parse(cooikes) res = self.run_api(url, method, params, headers) print("前置用例执行:%s" % res) return res
def test_good_list(): # url = "http://211.103.136.242:8064/categories/115/skus" #---使用配置文件的url了 #定义测试数据 url_y = ConfigYaml() url_path = url_y.get_conf_url() url = url_path + "/categories/115/skus" data = {"page": "1", "page_size": "10", "ordering": "create_time"} # r = requests.get(url,json=data) r = requeests_get(url, json=data) from utils.RequestsUtil import request request = request() r = request.get(url, json=data) # print(r.json()) print(r) code = r["code"] # print("-----test",code) AssertUtil().assert_code(code, 200) # body = r["body"] # print("-------test------",body) # AssertUtil().assert_in_body(body, 'count:14') #初始化数据对象 conn = init_db("db_1") #查询结果 res_db = conn.fetchone("select * from roles") print("数据库查询结果:%s" % res_db)
def test_run(self, case): # 3. 重构函数内容 data_key = ExcelConfig.DataConfig # run_list第一个用例,根据key获取values url = ConfigYaml().get_conf_url() + case[data_key.url] # print(url) case_id = case[data_key.case_id] case_model = case[data_key.case_model] case_name = case[data_key.case_name] pre_exec = case[data_key.pre_exec] method = case[data_key.method] params_type = case[data_key.params_type] params = case[data_key.params] expect_result = case[data_key.expect_result] headers = case[data_key.headers] cookies = case[data_key.cookies] status_code = case[data_key.status_code] db_verify = case[data_key.db_verify] # 2).根据url发送接口请求 request = Request() # params 获取的是字符类型 需要转义成json # 验证params有没有内容 if len(str(params).strip()) is not 0: params = json.loads(params) # method: post / get if str(method).lower() == "get": # 2.增加headers res = request.get(url, json=params) elif str(method).lower() == "post": res = request.post(url, json=params) else: log.error("错误请求method:%s" % method) print(res)
def test_yaml(login): # 初始化url,data url = ConfigYaml().get_conf_url() + login['url'] data = login['data'] # post请求 request = Request() res = request.post(url, json=data)
def test_login(): #3、定义测试数据 conf_y = ConfigYaml() url_path = conf_y.get_conf_url() url = url_path + "/authorizations/" #url = "http://211.103.136.242:8064/authorizations/" data = {"username": "******", "password": "******"} #4、发送POST请求 #r = requests.post(url,json=data) #r = requests_post(url,json=data) request = Request() r = request.post(url, json=data) #5、输出结果 #print(r.json()) print(r) #验证 #返回状态码 code = r["code"] #assert code == 200 AssertUtil().assert_code(code, 200) #返回结果内容 #body = json.dumps(r["body"]) body = r["body"] #assert '"user_id": 1, "username": "******"' in body AssertUtil().assert_in_body(body, '"user_id": 1, "username": "******"') #1、初始化数据库对象 conn = init_db("db_1") #2、查询结果 res_db = conn.fetchone( "select id,username from tb_users where username='******'") print("数据库查询结果", res_db) #3、验证 user_id = body["user_id"] assert user_id == res_db["id"]
def test_login(): # 3. 定义测试数据 url = ConfigYaml().get_conf_url() + "/authorizations/" # url = "http://211.103.136.242:8064/authorizations/" json_data = {"username": "******", "password": "******"} # 4. 发送post请求 # r = requests.post(url, json=json_data) # 调用封装的post方法 # res = requests_post(url, json=json_data) # 调用Requests重构的post方法 request = Request() res = request.post(url, json=json_data) # 5. 输出结果 # print(r.json()) print(res) # 验证 # 返回状态码 code = res["code"] # assert code == 201 AssertUtil().assert_code(code, 200) # 返回结果内容 # body = json.dumps(res["body"]) body = res["body"] # assert '"user_id": 1, "username": "******"' in body AssertUtil().assert_in_body(body, '"user_id": 1, "username": "******"') # 1.初始化数据库对象 conn = init_db("db_1") # 2.查询结果 res_db = conn.fetchone( "select id, username from tb_users where username = '******'") print("数据库查询结果", res_db) # 3. 验证结果 user_id = body["user_id"] assert user_id == res_db["id"]
def test_run(self, case): # 3、重构函数内容 # data_key = ExcelConfig.DataConfig # run_list第1个用例,用例,key获取values url = ConfigYaml().get_conf_url() + case[data_key.url] print(url) case_id = case[data_key.case_id] case_model = case[data_key.case_model] case_name = case[data_key.case_name] pre_exec = case[data_key.pre_exec] method = case[data_key.method] params_type = case[data_key.params_type] params = case[data_key.params] expect_result = case[data_key.expect_result] headers = case[data_key.headers] cookies = case[data_key.cookies] code = case[data_key.code] db_verify = case[data_key.db_verify] # 1、验证前置条件 if pre_exec: pass # 2、找到执行用例 # 前置测试用例 pre_case = data_init.get_case_pre(pre_exec) print("前置条件信息为:%s" % pre_case) pre_res = self.run_pre(pre_case) print(pre_res) headers, cookies = self.get_correlation(headers, cookies, pre_res) header = Base.json_parse(headers) cookie = Base.json_parse(cookies) res = self.run_api(url, method, params, header, cookie) print("测试用例执行:%s" % res) # allure # sheet名称 feature 一级标签 allure.dynamic.feature(sheet_name) # 模块 story 二级标签 allure.dynamic.story(case_model) # 用例ID+接口名称 title allure.dynamic.title(case_id + case_name) # 请求URL 请求类型 期望结果 实际结果描述 desc = "<font color='red'>请求URL: </font> {}<Br/>" \ "<font color='red'>请求类型: </font>{}<Br/>" \ "<font color='red'>期望结果: </font>{}<Br/>" \ "<font color='red'>实际结果: </font>{}".format(url, method, expect_result, res) allure.dynamic.description(desc) # 断言验证 # 状态码,返回结果内容,数据库相关的结果的验证 # 状态码 assert_util = AssertUtil() assert_util.assert_code(int(res["code"]), int(code)) # 返回结果内容 assert_util.assert_in_body(str(res["body"]), str(expect_result)) # 数据库结果断言 Base.assert_db("db_1", res["body"], db_verify)
def test_run(self, case): # data_key = ExcelConfig.DataConfig url = case[data_key.url] case_id = case[data_key.case_id] case_model = case[data_key.case_model] case_name = case[data_key.case_name] pre_exec = case[data_key.pre_exec] method = case[data_key.method] params_type = case[data_key.params_type] params = case[data_key.params] expect_result = case[data_key.expect_result] actual_result = case[data_key.actual_result] beizhu = case[data_key.beizhu] headers = case[data_key.headers] cookies = case[data_key.cookies] code = case[data_key.code] db_verify = case[data_key.db_verify] if pre_exec: # 前置用例 pre_case = data_init.get_case_pre(pre_exec) # print(f"前置条件信息为:{pre_case}") pre_res = self.run_pre(pre_case) headers, cookies = self.get_correlation(headers, cookies, pre_res) # 增加headers header = Base.json_parse(headers) # 增加cookies cookie = Base.json_parse(cookies) request = Request(ConfigYaml().get_config_url()) # params转义json # 验证params有没有内容 res = self.run_api(url, params, method, header, cookie) print(f"执行测试用例:{res}") # allure allure.dynamic.feature(sheet_name) allure.dynamic.story(case_model) allure.dynamic.title(case_id + case_name) desc = f"url:{url}<br> 请求方法:{method}<br> 期望结果:{expect_result}<br> 实际结果:{res}" allure.dynamic.description(desc) # 断言验证 assert_util = AssertUtil() assert_util.assert_code(int(res['code']), code) assert_util.assert_in_body(str(res['body']), str(expect_result)) # 数据库验证 # sql = Base.init_db('db_1') # db_res = sql.fetch_one(db_verify) # log.debug(f"数据库查询结果:{str(db_res)}") # for db_k,db_v in db_res.items(): # res_line = res['body'][db_k] # assert_util.assert_body(res_line, db_v) Base.assert_db(db_name='db_1', res_body=res['body'], db_verify=db_verify)
def test_login(login): url = ConfigYaml().get_conf_url() + login['url'] data = login['data'] print("data %s" % data) # post请求 request = Request() res = request.post(url, json=data) # 打印结果 print(res)
def test_run(self, case): # run_list第1个用例,用例,key获取values url = ConfigYaml().get_conf_url() + case[data_key.url] case_id = case[data_key.case_id] case_model = case[data_key.case_model] case_name = case[data_key.case_name] pre_exec = case[data_key.pre_exec] method = case[data_key.method] params_type = case[data_key.params_type] params = case[data_key.params] expect_result = case[data_key.expect_result] headers = case[data_key.headers] cookies = case[data_key.cookies] code = case[data_key.code] db_verify = case[data_key.db_verify] # 2.增加Headers # 3.增加cookies # 4.发送请求 if pre_exec: # 前置测试用例 pre_case = data_init.get_case_pre(pre_exec) print("前置条件信息为:%s" % pre_case) pre_res = self.run_pre(pre_case) headers, cookies = self.get_correlation(headers, cookies, pre_res) # 1.判断headers是否存在,json转义,无需 header = Base.json_param(headers) cookie = Base.json_param(cookies) res = self.run_api(url, method, params=params, header=header, cookie=cookie) print("测试用例执行:%s" % res) # allure # sheet名称 feature 一级标签 allure.dynamic.feature(sheet_name) # 模块 story 二级标签 allure.dynamic.story(case_model) # 用例ID+接口名称 title allure.dynamic.title(case_id + case_name) # 请求URL 请求类型 期望结果 实际结果描述 desc = "<font color='red'>请求URL111: </font> {}<Br/>" \ "<font color='red'>请求类型222: </font>{}<Br/>" \ "<font color='red'>期望结果: </font>{}<Br/>" \ "<font color='red'>实际结果: </font>{}".format(url, method, expect_result, res) allure.dynamic.description(desc) # 断言验证 # 状态码,返回结果内容,数据库相关的结果的验证 assert_util = AssertUtil() assert_util.assert_code(int(res['code']), code) # 返回结果内容 assert_util.assert_in_body(str(res["body"]), str(expect_result)) Base.assert_db("db_1", res["body"], db_verify)
def init_arangodb(db_alias): #从配置文件中读取Arangodb数据库信息进行初始化 arangodb_info = ConfigYaml().get_db_config(db_alias) arangoURL = arangodb_info['arangoURL'] username = arangodb_info['username'] password = arangodb_info['password'] conn = ArangodbUtil(arangoURL, username, password) return conn
def test_run(self, case): # 3. 重构函数内容 # data_key = ExcelConfig.DataConfig # run_list第一个用例,根据key获取values url = ConfigYaml().get_conf_url() + case[data_key.url] print(url) case_id = case[data_key.case_id] case_model = case[data_key.case_model] case_name = case[data_key.case_name] pre_exec = case[data_key.pre_exec] method = case[data_key.method] params_type = case[data_key.params_type] params = case[data_key.params] expect_result = case[data_key.expect_result] headers = case[data_key.headers] cookies = case[data_key.cookies] status_code = case[data_key.status_code] db_verify = case[data_key.db_verify] # 1.判断headers是否存在,存在:json转义 不存在:无需作任何操作 if headers: header = json.loads(headers) else: header = headers # 3.判断cookies是否存在,存在:json转义 不存在:无需作任何操作 if cookies: cookie = json.loads(cookies) else: cookie = cookies # 1.验证前置条件是否存在 if pre_exec: # 2.根据前置条件找到前置用例 pre_case = data_init.get_case_pre(pre_exec) print("前置条件信息为:%s" % pre_case) self.run_pre(pre_case) # 2).根据url发送接口请求 request = Request() # params 获取的是字符类型 需要转义成json # 验证params有没有内容 if len(str(params).strip()) is not 0: params = json.loads(params) # method: post / get if str(method).lower() == "get": # 2.增加headers res = request.get(url, json=params, headers=header, cookies=cookie) # 4.增加cookies elif str(method).lower() == "post": res = request.post(url, json=params, headers=header, cookies=cookie) else: log.error("错误请求method:%s" % method) print(res)
def __init__(self, env=None, excel_filename=None, sheet_name=None): # 1. 初始化信息,可单独定义或者写成配置文件 conf = ConfigYaml() self.env_url = conf.get_conf_url(env) self.env_excel_file = conf.get_excel_file(env).get(excel_filename) self.env_excel_sheet = conf.get_excel_sheet(env).get(sheet_name) self.case_file = get_data_path() + os.sep + self.env_excel_file # 2. 获取需要运行的测试用例数据 self.data_list = Data(self.case_file, self.env_excel_sheet).get_run_data()
def test_yaml(login): #初始化url,data url = ConfigYaml().get_conf_url() + login["url"] print("url %s" % url) data = login["data"] print("data %s" % data) #post请求 request = Request() res = request.post(url, json=data) #打印结果 print(res)
def test_yaml(login): """ 执行测试用例 """ uri = login['url'] print(uri) data = login['data'] print(data) request = Request(ConfigYaml().get_config_url()) res = request.post(uri, json=data) print(res)
def goods_list(): # 1、参数 conf_y = ConfigYaml() url_path = conf_y.get_conf_url() url = url_path + "/categories/115/skus/" # url = "http://211.103.136.242:8064/categories/115/skus/" data = {"page": "1", "page_size": "10", "ordering": "create_time"} # 2、请求 r = requests.get(url, json=data) # 3、结果 print(r.json())
def init_db(db_alias): db_info = ConfigYaml().get_db_conf_info(db_alias) host = db_info["db_host"] user = db_info["db_user"] passwrod = db_info["db_passwrod"] db_name = db_info["db_name"] charset = db_info["db_charset"] port = int(db_info["db_port"]) conn = Mysql(host, user, passwrod, db_name, charset, port) print(conn) return conn
def init_db(db_alias): #2、初始数据化信息,通过配置 db_info = ConfigYaml().get_db_conf_info(db_alias) host = db_info["db_host"] user = db_info["db_user"] password = db_info["db_password"] name = db_info["db_name"] #3、初始化myssql对象 conn = Mysql(host, user, password, name) print(conn) return conn
def goods_list(): """获取商品列表数据""" # 定义测试数据 url = ConfigYaml().get_conf_url() + "/categories/115/skus/" # url = "http://211.103.136.242:8064/categories/115/skus/" json_data = {"page": "1", "page_size": "10", "ordering": "create_time"} # 发送请求 # r = requests.get(url, json=json_data) res = requests_get(url, json=json_data) # 输出结果 # print(r.json()) print(res)
def get_report(self, case_name, url, method, data, expect, res): # 接口名称 title allure.dynamic.title(case_name) url = ConfigYaml().get_conf_url() + url # 请求URL 请求类型 期望结果 实际结果描述 desc = "" \ "<font color='red'>请求URL: </font> {}<Br/>" \ "<font color='red'>请求类型: </font>{}<Br/>" \ "<font color='red'>请求参数: </font>{}<Br/>" \ "<font color='red'>期望字段: </font>{}<Br/>" \ "<font color='red'>实际结果: </font>{}".format(url, method, data, expect, res) allure.dynamic.description(desc)
def init_db(db_alias): # 2、初始数据化信息,通过配置 db_info = ConfigYaml().get_db_conf_info(db_alias) host = db_info["db_host"] user = db_info["db_user"] password = db_info["db_password"] db_name = db_info["db_name"] charset = db_info["db_charset"] port = int(db_info["db_port"]) # 3、初始化mysql对象 conn = Mysql(host, user, password, db_name, charset, port) return conn
def test_01(): conf_y = ConfigYaml() url_path = conf_y.get_conf_url() url = url_path + "/action.ashx?action=GetSampleDeviceAndPoint" data = {"Inputs": "{CName:\"\",MCode:0,pageCurrent:1,PageSize:10}"} requests = Request() r = requests.post(url, data=data, headers=None) code = r["code"] AssertUtil().assert_code(code, 200) body = r["body"] AssertUtil().assert_in_body(body, "'Page': {'Current': 1, 'Total': 150}") print(body)
def init_db(db_alias): # 通过读取配置文件,初始化数据库信息 db_info = ConfigYaml().get_db_conf_info(db_alias) host = db_info["db_host"] user = db_info["db_user"] password = db_info["db_password"] db_name = db_info["db_name"] charset = db_info["db_charset"] port = int(db_info["db_port"]) # 初始化Mysql对象 conn = Mysql(host, user, password, db_name, charset, port) print(conn) return conn
def init_mysqldb(db_alias): # 从配置文件读取数据库信息进行初始化 db_info = ConfigYaml().get_db_config(db_alias) db_host = db_info["db_host"] db_user = db_info["db_user"] db_password = db_info["db_password"] db_name = db_info["db_name"] db_charset = db_info["db_charset"] db_port = int(db_info["db_port"]) conn = MysqlUtil(db_host, db_user, db_password, db_name, db_charset, db_port) return conn
def init_db(db_alias): # 2、初始化数据信息,通过配置 db_info = ConfigYaml().get_db_conf_info(db_alias) host = db_info['db_host'] user = db_info['db_user'] password = db_info['db_password'] db_name = db_info['db_name'] charset = db_info['db_charset'] port = int(db_info['db_port']) # 3、初始化mysql对象 conn = Mysql(host, user, password, db_name, charset, port) # print(conn) return conn
def run_pre(self, pre_case): url = ConfigYaml().get_conf_url() + pre_case[data_key.url] method = pre_case[data_key.method] params = pre_case[data_key.params] headers = pre_case[data_key.headers] cookies = pre_case[data_key.cookies] # 判断headers,cookies是否存在,json转义,无需 header = Base.json_param(headers) cookie = Base.json_param(cookies) res = self.run_api(url, method, params, header) print("前置用例执行:%s" % res) return res
def send_mail(report_html_path="", content="", title="测试"): """ 发送邮件 :param report_html_path: :param content: :param title: :return: """ email_info = ConfigYaml().get_email_info() smtp_addr = email_info["smtpserver"] username = email_info["username"] password = email_info["password"] recv = email_info["receiver"]
def get_indicator_data(response_data): conf_indicator_list = ConfigYaml().get_titan_info() for indicator_name in conf_indicator_list: test_indicator_list = list() file = Conf.get_titan_indicator_path() + os.sep + indicator_name + ".txt" with open(file, "r", encoding="utf-8") as f: standard_indicator_list = eval(f.read()) for first_data in response_data: disease_title = first_data["title"] if disease_title == indicator_name: test_indicator_list = get_data(first_data) print(test_indicator_list) Assertions().assert_in_titan_data(standard_indicator_list, test_indicator_list, indicator_name)
def test_06(): conf_y = ConfigYaml() url_path = conf_y.get_conf_url() url = url_path + "/action.ashx?action=GetDevStateBySysAndName" data = {"Inputs": ""} # headers = {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"} requests = Request() r = requests.post(url, data=data, headers=None) code = r["code"] AssertUtil().assert_code(code, 200) body = r["body"] # AssertUtil().assert_in_body(body, "'Page': {'Current': 1, 'Total': 0}, 'SysId': 0, 'SysName': '全系统'") print(body)