diff --git a/README.md b/README.md index 363aadc471d20c03d214b22d3004681c89f62fc4..ba245cd4a31a5f7711e4d0d71d511023d61488df 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,6 @@ └─ 项目文件夹 名称同config中 testname一致 ├─ urlData.yml # 所有 url 具体格式参考下面YAML URL格式说明 └─ login.yml # 用例数据 格式参考下面YAML PARAM格式说明 - ├─page # 所有请求封装 通过writePage.py根据url的yaml文件生成 ├─testcase └─ 项目文件夹 名称同config中 testname一致 # 测试用例 └─ test_login.py @@ -27,84 +26,66 @@ ``` yaml login: -- info: "用户名登录-成功" - headers: { - "Content-Type": "application/json" - } - data: - param: { - "username": "finsiot","password": "$caches(pwd)$" # 读取缓存值 + name: "登录" + token: false + order: 1 + case: + - info: "用户名登录-成功" + host: 'host' + address: '/v1/apps/$url(region_id)$/' # $url(region_id)$ 正则匹配参数中的路径参数 + method: 'post' + relevance: + - cachefrom: 'body' # response : 从结果中获取 body : 从参数中获取 + path: '$.code' # body如果是 "id=2&path=haha" 会转换成字典 然后根据path使用jsonpath取值 + name: 'code' + - cachefrom: 'response' # response : 从结果中获取 body : 从参数中获取 + path: '$.data' + name: 'data' + headers: { + "Content-Type": "application/json" } - urlparam: { - id: 123 - }# 路径参数 v1/api/$url(id)$/ - assert: - jsonpath: - # 关联验证 - - { - "path": "$.data.expense_trend[0].peak_hour.peak_hour", - "value": "$json($.data.trend[0].data.peak_hour)$", # 期望值为其他接口请求数据 - "asserttype": "==", - "relevance": "web电费统计" # 根据特定返回结果获取 为被关联验证接口的info + data: + param: { + "username": "finsiot","password": "$caches(pwd)$" # 读取缓存值 } - - { - "path": "$.code", - "value": 0, - "asserttype": "==", - "relevance": - } - - { - "path": "$.data.id", - "value": 196, - "asserttype": "==", - "relevance": - } - sqlassert: - - { - "datas": [ - { - "path": "$.data.id", - "name": "id" - }, - { - "path": "$.data.username", - "name": "username" - }, - ], - "sql": "select * from saas.user where username = '****'", - # 取数据库查询出的第一条数据进行验证 如果存在 列名 username 值为$.data.username则通过 + urlparam: { + id: 123 + }# 路径参数 v1/api/$url(id)$/ + assert: + jsonpath: + # 关联验证 + - { + "path": "$.data.expense_trend[0].peak_hour.peak_hour", + "value": "123", + "asserttype": "==" } - time: 2 -``` - - -## yaml url格式 - -``` yaml -regionList: - name: '区域列表' - host: 'host' - address: '/v1/apps/$url(region_id)$/' # $url(region_id)$ 正则匹配参数中的路径参数 - method: 'get' - relevance: - - cachefrom: 'body' # response : 从结果中获取 body : 从参数中获取 - path: '$.code' # body如果是 "id=2&path=haha" 会转换成字典 然后根据path使用jsonpath取值 - name: 'code' - - cachefrom: 'response' # response : 从结果中获取 body : 从参数中获取 - path: '$.data' - name: 'data' - relevanceCheck: true - # true为断言验证存在关联验证 此接口为被关联验证接口 接口结果为 期望值 - # 不存关联验证时 为空或者false - # 断言验证关联 + - { + "path": "$.code", + "value": 0, + "asserttype": "==" + } + - { + "path": "$.data.id", + "value": 196, + "asserttype": "==" + } + sqlassert: + - { + "datas": [ + { + "path": "$.data.id", + "name": "id" + }, + { + "path": "$.data.username", + "name": "username" + }, + ], + "sql": "select * from saas.user where username = '****'", + # 取数据库查询出的第一条数据进行验证 如果存在 列名 username 值为$.data.username则通过 + } + time: 2 ``` - -##关联验证 -多接口 -![img_2.png](img_2.png) - 多接口结果合并成一个字典传给 third_datas -单接口 - 两种方法 同多接口类似 或者直接传结果给third_data ## config.ini ```ini @@ -146,9 +127,8 @@ charset = utf8 webhook = secret = ``` - -## 其他 -jsonpath断言中value支持根据正则关联其他接口数据 -![img.png](img.png) -![img_1.png](img_1.png) - \ No newline at end of file +## 操作方法 +1. 新建config/config.ini文件 格式如上例子 +2. 执行scripts/newProject.py +3. 在生成的test_suite/datas/名称 文件夹下增加yaml测试用例 格式如上 +4. 执行writeCase.py生成测试脚本 关于token 需要根据自己项目情况修改writeCase.py的内容 (第59行) \ No newline at end of file diff --git a/img.png b/img.png deleted file mode 100644 index 12b9ea0bcec2d7a385441f8a6bdbebabf66185bd..0000000000000000000000000000000000000000 Binary files a/img.png and /dev/null differ diff --git a/img_1.png b/img_1.png deleted file mode 100644 index 275c76e5908d33ef27a9b5d3a53a6a0292a42f81..0000000000000000000000000000000000000000 Binary files a/img_1.png and /dev/null differ diff --git a/img_2.png b/img_2.png deleted file mode 100644 index 62b6b16c6d370faf64fba27c8922dac13602f267..0000000000000000000000000000000000000000 Binary files a/img_2.png and /dev/null differ diff --git a/scripts/newProject.py b/scripts/newProject.py new file mode 100644 index 0000000000000000000000000000000000000000..80d1279f4e0771bd24ab73ac7434b7e4a99c5820 --- /dev/null +++ b/scripts/newProject.py @@ -0,0 +1,47 @@ +# coding:utf-8 +""" +@author: 井松 +@contact: 529548204@qq.com +@file: newProject.py +@time: 2021/12/22 15:52 +""" +from config.confManage import dir_manage +from scripts.mkDir import mk_dir +testname = dir_manage('${test_name}$') +pro_path = dir_manage('${pro_dir}$') + dir_manage('${test_suite}$') +casepath = pro_path + dir_manage('${case_dir}$') + testname + +datapath = pro_path + dir_manage('${data_dir}$') + testname +def newProject(): + mk_dir(casepath) + mk_dir(datapath) + with open(casepath + "/" + r"{}".format("__init__.py"), 'w', encoding='utf-8') as f: + f.write("""# coding:utf-8 + +import logging + +import allure +import pytest + +from common.checkResult import asserting +from scripts.log import Log +from scripts.readYamlFile import ini_yaml +from common.basePage import apisend + + +Log() +__all__ = [ + 'pytest', + 'asserting', + 'Log', + 'ini_yaml', + 'logging', + 'allure', + 'apisend', +]""") + with open(casepath + "/" + r"{}".format("conftest.py"), 'w', encoding='utf-8') as f: + f.write(f"""# coding:utf-8 +from test_suite.testcase.{testname} import *""") + +if __name__ == '__main__': + newProject() \ No newline at end of file diff --git a/scripts/readYamlFile.py b/scripts/readYamlFile.py index fa5cfd6b8baf5ea71512e38bf4d0328a52050201..ae000d40bdc834ae2f058bb55cb950aa8cdc56bc 100644 --- a/scripts/readYamlFile.py +++ b/scripts/readYamlFile.py @@ -24,7 +24,8 @@ def ini_yaml(filename, path=datapath): if __name__ == '__main__': print(datapath) # get_yaml_data(r"F:\api2.0\config\runConfig.yml") - # runConfig_dict = ini_yaml(r'tmUrlData.yml',path= r"D:\apitest\test_suite\datas\troubleManage") + runConfig_dict = ini_yaml(r'login.yml')["login"]["case"] + print(runConfig_dict) # # case_level = runConfig_dict[0]["address"].format(**{"home_id": "123"}) # print(runConfig_dict) diff --git a/scripts/writeCase.py b/scripts/writeCase.py new file mode 100644 index 0000000000000000000000000000000000000000..a61c77e68b6b8f2a01e2541856e3e32393795b0b --- /dev/null +++ b/scripts/writeCase.py @@ -0,0 +1,90 @@ +# coding:utf-8 +import os +import time + +from config.confManage import dir_manage +from scripts.log import Log +from scripts.readYamlFile import ini_yaml + +Log() +import logging + + +def getFilePathList(path): + filename = [] + # 获取所有文件下的子文件名称 + for root, dirs, files in os.walk(path): + # 过滤所有空文件 + if files: + for i in files: + # 判断只返回 yaml 的文件 + if '.yml' in i: + filename.append(str(i).split(".")[0]) + return filename + + +def write_pages(_file): + t1 = time.time() + testname = dir_manage('${test_name}$') + pro_path = dir_manage('${pro_dir}$') + dir_manage('${test_suite}$') + casepath = pro_path + dir_manage('${case_dir}$') + testname + + datapath = pro_path + dir_manage('${data_dir}$') + testname + filelist = getFilePathList(datapath) + print(filelist) + for file in filelist: + filedata = ini_yaml(file + ".yml") + if "test_" + file + ".py" in os.listdir(casepath): + pass + else: + with open(casepath + "/" + r"{}".format("test_" + file + ".py"), 'w', encoding='utf-8') as f: + f.write(f"""from test_suite.testcase.{testname} import * + +paramData = ini_yaml("{file}.yml") + +class Test_{file}(object):""") + for item in filedata: + order = filedata[item]["order"] + + f.write(f""" + @allure.story("Test_{file}") + @pytest.mark.parametrize('casedata', paramData["{item}"]["case"], + ids=[i["info"] for i in paramData["{item}"]["case"]]) + @pytest.mark.flaky(reruns=1, reruns_delay=1) + @pytest.mark.run(order={order})""") + + if filedata[item]["token"]: + f.write(f""" + def test_{item}(self, casedata, setup_Login): + casedata["headers"]["Authorization"] = setup_Login""") # token类型是 Authorization + else: + f.write(f""" + def test_{item}(self, casedata):""") + f.write(""" + res, restime = apisend(host=casedata["host"], address=casedata["address"], method=casedata["method"], + headers=casedata["headers"], + data=casedata["data"], rel=casedata["relevance"]) + asserting(hope_res=casedata["assert"], real_res=res, re_time=restime)\n""") + + t2 = time.time() - t1 + print(t2) + + +# def write_case(f): +# for i in f: +# + + +if __name__ == '__main__': + # ym_path = r'thirdUrl.yml' + # pagenames = "third_pages_1.py" + + ym_path = r'urlData.yml' + pagenames = "saasApp_pages_1.py" + # write_case(ym_path,pagenames) + + # ym_path = r'urlData.yml' + # pagenames = "saasWeb_pages_1.py" + write_pages(ym_path) + # l = getFilePathList(r"D:\apitest\test_suite\datas\saasWeb") + # print(l) diff --git a/scripts/writePage.py b/scripts/writePage.py deleted file mode 100644 index d0639748d55c4cd8ee15849e3751f20d04ffa48a..0000000000000000000000000000000000000000 --- a/scripts/writePage.py +++ /dev/null @@ -1,73 +0,0 @@ -# coding:utf-8 -import os -import time - -from config.confManage import dir_manage -from scripts.log import Log -from scripts.readYamlFile import ini_yaml - -Log() -import logging - - -def getFilePathList(path, filetype): - pathList = [] - for root, dirs, files in os.walk(path): - for file in files: - if file.endswith(filetype): - pathList.append(os.path.join(root, file)) - return pathList - - -def write_pages(_file,pagename): - t1 = time.time() - path = dir_manage('${pro_dir}$') + dir_manage('${test_suite}$') + dir_manage('${page_dir}$') + dir_manage('${test_name}$') - print(path) - with open(path +"/" +r"{}".format(pagename), 'w+', encoding='utf-8') as f: - f.write("""# coding:utf-8\nfrom test_suite.page.{} import *\n\nurlData = ini_yaml("{}")\n\n""".format(dir_manage('${test_name}$'),_file)) - yml_data = ini_yaml(_file) - - for item in yml_data.items(): - logging.debug("正在生成page文件.{}".format(str(item))) - f.write(""" -def {testtitle}(casedata):""".format(testtitle=item[0])) - f.write(""" - data = urlData["{0}"]""".format(item[0]) - ) - f.write( - """ - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"])""" - - ) - if item[1]["relevanceCheck"]: - f.write( -""" - return {casedata["info"]:res}, restime\n\n""" - ) - else : - f.write( -""" - return res, restime\n\n""" - ) - t2 = time.time() - t1 - print(t2) - - -# def write_case(f): -# - - - -if __name__ == '__main__': - # ym_path = r'thirdUrl.yml' - # pagenames = "third_pages_1.py" - - ym_path = r'urlData.yml' - pagenames = "saasApp_pages_1.py" - # write_case(ym_path,pagenames) - - # ym_path = r'urlData.yml' - # pagenames = "saasWeb_pages_1.py" - write_pages(ym_path,pagenames) diff --git a/setupMain.py b/setupMain.py index 5ba800a6fdcf6621f628895f29badac70bc5c9c8..c2bba69768555238cc9792c2fa6b609505dab115 100644 --- a/setupMain.py +++ b/setupMain.py @@ -21,16 +21,16 @@ def run(): test_case_path = project_path + dir_manage('${test_suite}$') + dir_manage('${case_dir}$') + dir_manage( '${test_name}$') # temp地址变量 - temp_path = project_path + dir_manage('${report_xml_dir}$') + "temp/" + localtime + '/' + temp_path = project_path + dir_manage('${report_xml_dir}$') + "temp/" # html地址变量 - html_path = project_path + dir_manage('${report_html_dir}$') + date + '/' + html_path = project_path + dir_manage('${report_html_dir}$') # 如果不存在地址路径则创建文件夹 mk_dir(temp_path) mk_dir(html_path) # 执行命令行 args = ['-s', '-q', test_case_path, '--alluredir', temp_path] # args = ['-s', '-q', test_case_path,] - # pytest.main(args) + pytest.main(args) cmd = 'allure generate %s -o %s -c' % (temp_path, html_path) os.system(cmd) diff --git a/test_suite/page/__init__.py b/test_suite/page/__init__.py deleted file mode 100644 index f512deae9d6c2a62507daa80c7f67b38dea541a0..0000000000000000000000000000000000000000 --- a/test_suite/page/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# coding:utf-8 diff --git a/test_suite/page/saasApp/saasApp_pages.py b/test_suite/page/saasApp/saasApp_pages.py deleted file mode 100644 index 8f0539db2e7354d85c7f19e7b9aa8057208e1a09..0000000000000000000000000000000000000000 --- a/test_suite/page/saasApp/saasApp_pages.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding:utf-8 -from test_suite.page.saasApp import * - -urlData = ini_yaml("urlData.yml") - - -def login(casedata): - data = urlData["login"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def forgetPassword(casedata): - data = urlData["forgetPassword"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def mobileCode(casedata): - data = urlData["mobileCode"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def todayTask(casedata): - data = urlData["todayTask"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def companyName(casedata): - data = urlData["companyName"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def companyPower(casedata): - data = urlData["companyPower"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def deviceState(casedata): - data = urlData["deviceState"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def companyAlarm(casedata): - data = urlData["companyAlarm"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def todayTrend(casedata): - data = urlData["todayTrend"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def alarmStatistic(casedata): - data = urlData["alarmStatistic"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def alarmTrend(casedata): - data = urlData["alarmTrend"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def alarmRank(casedata): - data = urlData["alarmRank"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def alarmDistribute(casedata): - data = urlData["alarmDistribute"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def powerToday(casedata): - data = urlData["powerToday"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def powerFees(casedata): - data = urlData["powerFees"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def functionList(casedata): - data = urlData["functionList"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def regionList(casedata): - data = urlData["regionList"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - diff --git a/test_suite/page/saasApp/saasApp_pages_1.py b/test_suite/page/saasApp/saasApp_pages_1.py deleted file mode 100644 index 373daded13b361019cbc95f152bbbf74b5a5afec..0000000000000000000000000000000000000000 --- a/test_suite/page/saasApp/saasApp_pages_1.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding:utf-8 -from test_suite.page import * - -urlData = ini_yaml("urlData.yml") - - -def login(casedata): - data = urlData["login"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def forgetPassword(casedata): - data = urlData["forgetPassword"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def mobileCode(casedata): - data = urlData["mobileCode"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def todayTask(casedata): - data = urlData["todayTask"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def companyName(casedata): - data = urlData["companyName"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def companyPower(casedata): - data = urlData["companyPower"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def deviceState(casedata): - data = urlData["deviceState"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def companyAlarm(casedata): - data = urlData["companyAlarm"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def todayTrend(casedata): - data = urlData["todayTrend"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def alarmStatistic(casedata): - data = urlData["alarmStatistic"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def alarmTrend(casedata): - data = urlData["alarmTrend"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def alarmRank(casedata): - data = urlData["alarmRank"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def alarmDistribute(casedata): - data = urlData["alarmDistribute"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def powerToday(casedata): - data = urlData["powerToday"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def powerFees(casedata): - data = urlData["powerFees"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def functionList(casedata): - data = urlData["functionList"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def regionList(casedata): - data = urlData["regionList"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - diff --git a/test_suite/page/saasApp/temple.py b/test_suite/page/saasApp/temple.py deleted file mode 100644 index c749cd14224d6315d08ee0a2cde05f27ce4a9f0d..0000000000000000000000000000000000000000 --- a/test_suite/page/saasApp/temple.py +++ /dev/null @@ -1,7 +0,0 @@ -# coding:utf-8 -""" -@author: 井松 -@contact: 529548204@qq.com -@file: temple.py -@time: 2021/9/14 16:44 -""" diff --git a/test_suite/page/saasApp/third_pages.py b/test_suite/page/saasApp/third_pages.py deleted file mode 100644 index 8d445690deb9ec9ee4a9577bf77442f91a86e47f..0000000000000000000000000000000000000000 --- a/test_suite/page/saasApp/third_pages.py +++ /dev/null @@ -1,37 +0,0 @@ -# coding:utf-8 -from test_suite.page import * - -urlData = ini_yaml("thirdUrl.yml") - - -def weblogin(casedata): - data = urlData["weblogin"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"]) - return res, restime - - -def webalarm(casedata): - data = urlData["webalarm"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"]) - return res, restime - - -def webFees(casedata): - data = urlData["webFees"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"]) - return {casedata["info"]:res}, restime - - -def webPower(casedata): - data = urlData["webPower"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"]) - return {casedata["info"]:res}, restime - diff --git a/test_suite/page/saasApp/third_pages_1.py b/test_suite/page/saasApp/third_pages_1.py deleted file mode 100644 index e45e0cf0df047a3381d2f21587a76945a543a4d9..0000000000000000000000000000000000000000 --- a/test_suite/page/saasApp/third_pages_1.py +++ /dev/null @@ -1,37 +0,0 @@ -# coding:utf-8 -from test_suite.page.saasApp import * - -urlData = ini_yaml("thirdUrl.yml") - - -def weblogin(casedata): - data = urlData["weblogin"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"]) - return res, restime - - -def webalarm(casedata): - data = urlData["webalarm"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"]) - return res, restime - - -def webFees(casedata): - data = urlData["webFees"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"]) - return {casedata["info"]:res}, restime - - -def webPower(casedata): - data = urlData["webPower"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"]) - return {casedata["info"]:res}, restime - diff --git a/test_suite/page/saasWeb/saasApp_pages_1.py b/test_suite/page/saasWeb/saasApp_pages_1.py deleted file mode 100644 index 153f08bf91c2cd08d780e45a870bfe1011d0b4c0..0000000000000000000000000000000000000000 --- a/test_suite/page/saasWeb/saasApp_pages_1.py +++ /dev/null @@ -1,45 +0,0 @@ -# coding:utf-8 -from test_suite.page.saasWeb import * - -urlData = ini_yaml("urlData.yml") - - -def login(casedata): - data = urlData["login"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def firmwareList(casedata): - data = urlData["firmwareList"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def firmwareAdd(casedata): - data = urlData["firmwareAdd"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def firmwareDel(casedata): - data = urlData["firmwareDel"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def firmwareDetail(casedata): - data = urlData["firmwareDetail"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - diff --git a/test_suite/page/saasWeb/saasWeb_pages.py b/test_suite/page/saasWeb/saasWeb_pages.py deleted file mode 100644 index 153f08bf91c2cd08d780e45a870bfe1011d0b4c0..0000000000000000000000000000000000000000 --- a/test_suite/page/saasWeb/saasWeb_pages.py +++ /dev/null @@ -1,45 +0,0 @@ -# coding:utf-8 -from test_suite.page.saasWeb import * - -urlData = ini_yaml("urlData.yml") - - -def login(casedata): - data = urlData["login"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def firmwareList(casedata): - data = urlData["firmwareList"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def firmwareAdd(casedata): - data = urlData["firmwareAdd"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def firmwareDel(casedata): - data = urlData["firmwareDel"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def firmwareDetail(casedata): - data = urlData["firmwareDetail"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - diff --git a/test_suite/page/saasWeb/saasWeb_pages_1.py b/test_suite/page/saasWeb/saasWeb_pages_1.py deleted file mode 100644 index 153f08bf91c2cd08d780e45a870bfe1011d0b4c0..0000000000000000000000000000000000000000 --- a/test_suite/page/saasWeb/saasWeb_pages_1.py +++ /dev/null @@ -1,45 +0,0 @@ -# coding:utf-8 -from test_suite.page.saasWeb import * - -urlData = ini_yaml("urlData.yml") - - -def login(casedata): - data = urlData["login"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def firmwareList(casedata): - data = urlData["firmwareList"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def firmwareAdd(casedata): - data = urlData["firmwareAdd"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def firmwareDel(casedata): - data = urlData["firmwareDel"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - - -def firmwareDetail(casedata): - data = urlData["firmwareDetail"] - logging.info("{}".format(casedata["info"])) - res, restime = apisend(host=data["host"], address=data["address"], method=data["method"], headers=casedata["headers"], - data=casedata["data"],rel=data["relevance"]) - return res, restime - diff --git a/test_suite/page/saasWeb/__init__.py b/test_suite/testcase/fengling/__init__.py similarity index 66% rename from test_suite/page/saasWeb/__init__.py rename to test_suite/testcase/fengling/__init__.py index d19dd19cf50042ac3309948407b591f6f1aed469..910bcd204eb7b1dc60bca972d7fdf591fb19a547 100644 --- a/test_suite/page/saasWeb/__init__.py +++ b/test_suite/testcase/fengling/__init__.py @@ -1,11 +1,4 @@ # coding:utf-8 -""" -@author: 井松 -@contact: 529548204@qq.com -@file: __init__.py.py -@time: 2021/12/3 13:52 -""" - import logging @@ -16,7 +9,7 @@ from common.checkResult import asserting from scripts.log import Log from scripts.readYamlFile import ini_yaml from common.basePage import apisend -from test_suite.page.saasWeb import saasWeb_pages + Log() __all__ = [ @@ -27,5 +20,4 @@ __all__ = [ 'logging', 'allure', 'apisend', - 'saasWeb_pages', ] \ No newline at end of file diff --git a/test_suite/testcase/fengling/conftest.py b/test_suite/testcase/fengling/conftest.py new file mode 100644 index 0000000000000000000000000000000000000000..ec838acaf666a1eb4be990f258e770a9edab23e7 --- /dev/null +++ b/test_suite/testcase/fengling/conftest.py @@ -0,0 +1,2 @@ +# coding:utf-8 +from test_suite.testcase.fengling import * \ No newline at end of file diff --git a/test_suite/page/saasApp/__init__.py b/test_suite/testcase/saasWeb/__init__.py similarity index 66% rename from test_suite/page/saasApp/__init__.py rename to test_suite/testcase/saasWeb/__init__.py index 970b2add8260f5e8cece335a1d76dadac25d7862..910bcd204eb7b1dc60bca972d7fdf591fb19a547 100644 --- a/test_suite/page/saasApp/__init__.py +++ b/test_suite/testcase/saasWeb/__init__.py @@ -1,10 +1,4 @@ # coding:utf-8 -""" -@author: 井松 -@contact: 529548204@qq.com -@file: __init__.py.py -@time: 2021/12/3 13:51 -""" import logging @@ -15,7 +9,7 @@ from common.checkResult import asserting from scripts.log import Log from scripts.readYamlFile import ini_yaml from common.basePage import apisend -from test_suite.page.saasApp import saasApp_pages + Log() __all__ = [ @@ -26,5 +20,4 @@ __all__ = [ 'logging', 'allure', 'apisend', - 'saasApp_pages', ] \ No newline at end of file diff --git a/test_suite/testcase/saasWeb/conftest.py b/test_suite/testcase/saasWeb/conftest.py index bcbabb6edfa0cc5c82a96c9ebfa57a6a9f634dee..85c1bf96eb9dd8c1c7409177a6a8258f06f71405 100644 --- a/test_suite/testcase/saasWeb/conftest.py +++ b/test_suite/testcase/saasWeb/conftest.py @@ -5,18 +5,17 @@ @file: conftest.py @time: 2021/12/3 14:25 """ -from test_suite.page.saasWeb.saasWeb_pages import * +from test_suite.testcase.saasWeb import * -paramData = ini_yaml("loginData.yml")["login"][0] +paramData = ini_yaml("login.yml")["login"]["case"][0] @pytest.fixture(scope="module") def setup_Login(): logging.info("前置请求登录") - data = urlData["login"] logging.info("{}".format(paramData["info"])) - res, restime = apisend(host=data["host"],address=data["address"], method=data["method"], headers=paramData["headers"], - data=paramData["data"],rel=data["relevance"]) + res, restime = apisend(host=paramData["host"],address=paramData["address"], method=paramData["method"], headers=paramData["headers"], + data=paramData["data"],rel=paramData["relevance"]) logging.info("前置请求结束") - return res + return "JWT " + res["data"]["token"] diff --git a/test_suite/testcase/saasWeb/test_firmware.py b/test_suite/testcase/saasWeb/test_firmware.py index 29b84901f821d15b68196cca5db01b619013c79e..644cd71472f46e8639e10d986a909eb4d4a4e3d2 100644 --- a/test_suite/testcase/saasWeb/test_firmware.py +++ b/test_suite/testcase/saasWeb/test_firmware.py @@ -1,53 +1,52 @@ -# coding:utf-8 -""" -@author: 井松 -@contact: 529548204@qq.com -@file: test_firmware.py -@time: 2021/12/3 14:30 -""" -import pytest +from test_suite.testcase.saasWeb import * + +paramData = ini_yaml("firmware.yml") -from test_suite.page.saasWeb.saasWeb_pages import * - -paramData = ini_yaml("firmwareData.yml") - - -class Test_firmwareList(object): - # def setup(self): - # self.re = saasPages() - # ids=[i["info"] for i in paramData["login"]] - @allure.story("Test_firmwareList") - @pytest.mark.parametrize('casedata', paramData["firmwareList"], ids=[i["info"] for i in paramData["firmwareList"]]) +class Test_firmware(object): + @allure.story("Test_firmware") + @pytest.mark.parametrize('casedata', paramData["firmwareList"]["case"], + ids=[i["info"] for i in paramData["firmwareList"]["case"]]) @pytest.mark.flaky(reruns=1, reruns_delay=1) - @pytest.mark.run(order=2) - def test_firmwareList(self, casedata, setup_webLogin): - casedata["headers"]["Authorization"] = "JWT " + setup_webLogin["data"]["token"] - res, restime = firmwareList(casedata) + @pytest.mark.run(order=1) + def test_firmwareList(self, casedata, setup_Login): + casedata["headers"]["Authorization"] = setup_Login + res, restime = apisend(host=casedata["host"], address=casedata["address"], method=casedata["method"], + headers=casedata["headers"], + data=casedata["data"], rel=casedata["relevance"]) asserting(hope_res=casedata["assert"], real_res=res, re_time=restime) - @allure.story("Test_firmwareAdd") - @pytest.mark.parametrize('casedata', paramData["firmwareAdd"], ids=[i["info"] for i in paramData["firmwareAdd"]]) + @allure.story("Test_firmware") + @pytest.mark.parametrize('casedata', paramData["firmwareAdd"]["case"], + ids=[i["info"] for i in paramData["firmwareAdd"]["case"]]) @pytest.mark.flaky(reruns=1, reruns_delay=1) @pytest.mark.run(order=1) - def test_firmwareAdd(self, casedata, setup_webLogin): - casedata["headers"]["Authorization"] = "JWT " + setup_webLogin["data"]["token"] - res, restime = firmwareAdd(casedata) + def test_firmwareAdd(self, casedata, setup_Login): + casedata["headers"]["Authorization"] = setup_Login + res, restime = apisend(host=casedata["host"], address=casedata["address"], method=casedata["method"], + headers=casedata["headers"], + data=casedata["data"], rel=casedata["relevance"]) asserting(hope_res=casedata["assert"], real_res=res, re_time=restime) - @allure.story("Test_firmwareDel") - @pytest.mark.parametrize('casedata', paramData["firmwareDel"], ids=[i["info"] for i in paramData["firmwareDel"]]) + @allure.story("Test_firmware") + @pytest.mark.parametrize('casedata', paramData["firmwareDetail"]["case"], + ids=[i["info"] for i in paramData["firmwareDetail"]["case"]]) @pytest.mark.flaky(reruns=1, reruns_delay=1) - @pytest.mark.run(order=3) - def test_firmwareDel(self, casedata, setup_Login): - casedata["headers"]["Authorization"] = "JWT " + setup_Login["data"]["token"] - res, restime = firmwareDel(casedata) + @pytest.mark.run(order=2) + def test_firmwareDetail(self, casedata, setup_Login): + casedata["headers"]["Authorization"] = setup_Login + res, restime = apisend(host=casedata["host"], address=casedata["address"], method=casedata["method"], + headers=casedata["headers"], + data=casedata["data"], rel=casedata["relevance"]) asserting(hope_res=casedata["assert"], real_res=res, re_time=restime) - @allure.story("Test_firmwareDetail") - @pytest.mark.parametrize('casedata', paramData["firmwareDetail"], ids=[i["info"] for i in paramData["firmwareDetail"]]) + @allure.story("Test_firmware") + @pytest.mark.parametrize('casedata', paramData["firmwareDel"]["case"], + ids=[i["info"] for i in paramData["firmwareDel"]["case"]]) @pytest.mark.flaky(reruns=1, reruns_delay=1) - @pytest.mark.run(order=2) - def test_firmwareDetail(self, casedata, setup_webLogin): - # casedata["headers"]["Authorization"] = "JWT " + setup_webLogin["data"]["token"] - res, restime = firmwareDetail(casedata) - asserting(hope_res=casedata["assert"], real_res=res, re_time=restime) \ No newline at end of file + @pytest.mark.run(order=3) + def test_firmwareDel(self, casedata, setup_Login): + casedata["headers"]["Authorization"] = setup_Login + res, restime = apisend(host=casedata["host"], address=casedata["address"], method=casedata["method"], + headers=casedata["headers"], + data=casedata["data"], rel=casedata["relevance"]) + asserting(hope_res=casedata["assert"], real_res=res, re_time=restime) diff --git a/test_suite/testcase/saasWeb/test_login.py b/test_suite/testcase/saasWeb/test_login.py index 26f1b830a929ff282762307c2f09f8643627b23d..303bbcb34f001674e863a487589c5afe3a51a0b1 100644 --- a/test_suite/testcase/saasWeb/test_login.py +++ b/test_suite/testcase/saasWeb/test_login.py @@ -1,27 +1,15 @@ -# coding:utf-8 -""" -@author: 井松 -@contact: 529548204@qq.com -@file: test_login.py -@time: 2021/12/3 13:54 -""" -import pytest - -from test_suite.page.saasWeb.saasWeb_pages import * - -paramData = ini_yaml("loginData.yml") - +from test_suite.testcase.saasWeb import * + +paramData = ini_yaml("login.yml") class Test_login(object): - # def setup(self): - # self.re = saasPages() - # ids=[i["info"] for i in paramData["login"]] @allure.story("Test_login") - @pytest.mark.parametrize('casedata', paramData["login"], ids=[i["info"] for i in paramData["login"]]) + @pytest.mark.parametrize('casedata', paramData["login"]["case"], + ids=[i["info"] for i in paramData["login"]["case"]]) @pytest.mark.flaky(reruns=1, reruns_delay=1) @pytest.mark.run(order=1) def test_login(self, casedata): - res, restime = login(casedata) - asserting(hope_res=casedata["assert"], real_res=res,re_time=restime) - - + res, restime = apisend(host=casedata["host"], address=casedata["address"], method=casedata["method"], + headers=casedata["headers"], + data=casedata["data"], rel=casedata["relevance"]) + asserting(hope_res=casedata["assert"], real_res=res, re_time=restime)