接口测试报告模板_HttpRunner3.X开源接口测试框架学习(二) - Go语言中文社区

接口测试报告模板_HttpRunner3.X开源接口测试框架学习(二)


HttpRunner3.X开源接口测试框架学习(二)

debugtalk.py

每个项目应该并且只能有一个debugtalk.py文件。该文件具有多种功能。

  • 作为项目的根路径锚,测试用例中的相对路径(例如引用测试用例或CSV文件)都基于此根路径
  • 存储自定义python函数,在测试用例中调用的函数均在此文件中定义

HttpRunner框架中的变量

全局变量

全局变量在.env文件中定义,编写测试用例脚本时使用中${ENV(KEY)} 获取变量

pytest格式

ca855cff6776c7659f7bc5f2277a5574.png

用例级变量

在使用pytest格式编写测试用例时,variables用来定义变量,请注意如果全局环境变量与测试用例脚本中存在相同变量名,则优先使用用例级变量。即:测试用例变量>导出变量>测试套件配置变量>引用的测试用例配置变量

7d6c77425ac366939e28a496250884ad.png

创建HttpRunner项目

httprunner框架提供了自动生成手脚架项目的功能,可以快速创建新项目。

#使用httprunner命令创建项目 httprunner startproject demo    创建名为demo的httprunner项目#自动生成的文件目录如下:       created folder: demo/har                    #har接口录制导出文件,用于生成测试脚本created folder: demo/reports                #测试报告存放目录                   created folder: demo/testcases              #测试用例存放目录created file: demo/testcases/demo_testcase_request.yml   #测试用例模板示例created file: demo/testcases/demo_testcase_ref.yml       #测试用例模板示例created file: demo/debugtalk.py             #debugtalk.py文件  #用于编写自定义函数created file: demo/.env                     #全局环境变量定义文件created file: demo/.gitignore               

示例创建baidutest项目:

C:github>httprunner startproject baidutest2020-08-11 14:32:19.860 | INFO     | httprunner.scaffold:create_scaffold:43 - Create new project: baidutestProject Root Dir: C:githubbaidutestcreated folder: baidutestcreated folder: baidutestharcreated folder: baidutestestcasesc:programspythonpython38libsite-packages甥汲楬b3equest.py:171: InvalidProxyConfigurationWarning: Your proxy configuration specified an HTTPS scheme for the proxy. Are you sure you want to use HTTPS to contact the proxy? This most likely indicates an error in your configuration. Read this issue for more info: https://github.com/urllib3/urllib3/issues/1850  return self.urlopen(method, url, **extra_kw)created folder: baidutesteportscreated file: baidutestestcasesdemo_testcase_request.ymlcreated file: baidutestestcasesdemo_testcase_ref.ymlcreated file: baidutestdebugtalk.pycreated file: baidutest.envcreated file: baidutest.gitignore​$ tree baidutest -a2020-08-11 14:32:19.921 | WARNING  | httprunner.scaffold:show_tree:29 - tree command not exists, ignore.Sentry is attempting to send 0 pending error messagesWaiting up to 2 secondsPress Ctrl-Break to quit

编写httprunner框架接口测试用例

httprunner提供了自动生成测试脚本的功能,利用har2case xxx.har命令可以将抓包工具导出的har文件转换为pytest格式测试用例(默认格式),也可以转换成yaml、json格式。

使用抓包工具录制业务:

如图使用charles工具录制导出har文件

a31d1d20cbaeb168c541be93a90f351b.png

har2case命令详解:

$ har2case -husage: har2case har2case [-h] [-2y] [-2j] [--filter FILTER]                         [--exclude EXCLUDE]                         [har_source_file]​positional arguments:  har_source_file       Specify HAR source file​optional arguments:  -h, --help            show this help message and exit  -2y, --to-yml, --to-yaml                        Convert to YAML format, if not specified, convert to                        pytest format by default.  -2j, --to-json        Convert to JSON format, if not specified, convert to                        pytest format by default.  --filter FILTER       Specify filter keyword, only url include filter string                        will be converted.  --exclude EXCLUDE     Specify exclude keyword, url that includes exclude                        string will be ignored, multiple keywords can be                        joined with '|'

执行har2case doctest.har 命令后会在当前文件夹生成doctest_test.py测试用例文件

C:githubbaidutesthar>har2case doctest.har2020-08-11 14:51:57.340c:programspythonpython38libsite-packages甥汲楬b3equest.py:171: InvalidProxyConfigurationWarning: Your proxy configuration specified an HTTPS scheme for the proxy. Are you sure you want to use HTTPS to contact the proxy? This most likely indicates an error in your configuration. Read this issue for more info: https://github.com/urllib3/urllib3/issues/1850  return self.urlopen(method, url, **extra_kw) | INFO     | httprunner.ext.har2case.core:gen_testcase:356 - Start to generate testcase from C:githubbaidutesthardoctest.har2020-08-11 14:51:57.354 | INFO     | httprunner.ext.har2case.core:_make_testcase:347 - Extract info from HAR file and prepare for testcase.2020-08-11 14:51:57.358 | INFO     | httprunner.compat:ensure_testcase_v3:219 - ensure compatibility with testcase format v22020-08-11 14:51:57.438 | INFO     | httprunner.loader:load_dot_env_file:127 - Loading environment variables from C:githubbaidutest.env2020-08-11 14:51:57.456 | DEBUG    | httprunner.utils:set_os_environ:33 - Set OS environment variable: USERNAME2020-08-11 14:51:57.462 | DEBUG    | httprunner.utils:set_os_environ:33 - Set OS environment variable: PASSWORD2020-08-11 14:51:57.471 | INFO     | httprunner.make:make_testcase:349 - start to make testcase: C:githubbaidutesthardoctest.har2020-08-11 14:51:57.480 | INFO     | httprunner.make:make_testcase:442 - generated testcase: C:githubbaidutesthardoctest_test.py2020-08-11 14:51:57.484 | INFO     | httprunner.make:format_pytest_with_black:170 - format pytest cases with black ...reformatted C:githubbaidutesthardoctest_test.pyAll done! ✨  ✨1 file reformatted.2020-08-11 14:51:58.705 | INFO     | httprunner.ext.har2case.core:gen_testcase:377 - generated testcase: C:githubbaidutesthardoctest_test.py
bb569c2faa85ac1219f991ac1d6e5b68.png

doctest_test用例文件:

# NOTE: Generated By HttpRunner v3.1.4# FROM: hardoctest.har​​from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase​​class TestCaseDoctest(HttpRunner):​    config = Config("testcase description").verify(False)​    teststeps = [        Step(            RunRequest("/controller/login/login.html")            .get("http://www.doclever.cn/controller/login/login.html")            .with_headers(                **{                    "Host": "www.doclever.cn",                    "Upgrade-Insecure-Requests": "1",                    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36",                    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",                    "Referer": "http://www.doclever.cn/controller/index/index.html",                    "Accept-Encoding": "gzip, deflate",                    "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",                    "Cookie": "pgv_pvid=7266193040",                    "Connection": "keep-alive",                }            )            .with_cookies(**{"pgv_pvid": "7266193040"})            .validate()            .assert_equal("status_code", 200)            .assert_equal('headers."Content-Type"', "text/html")        ),        Step(            RunRequest("/user/login")            .post("http://www.doclever.cn:8090/user/login")            .with_headers(                **{                    "Host": "www.doclever.cn:8090",                    "Content-Length": "28",                    "Accept": "application/json, text/plain, */*",                    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36",                    "content-type": "application/x-www-form-urlencoded",                    "Origin": "http://www.doclever.cn",                    "Referer": "http://www.doclever.cn/controller/login/login.html",                    "Accept-Encoding": "gzip, deflate",                    "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",                    "Cookie": "pgv_pvid=7266193040; __qc_wId=29",                    "Connection": "keep-alive",                }            )            .with_cookies(**{"pgv_pvid": "7266193040", "__qc_wId": "29"})            .with_data({"name": "lanTest", "password": "123456"})            .validate()            .assert_equal("status_code", 200)            .assert_equal('headers."Content-Type"', "application/json; charset=utf-8")            .assert_equal("body.code", 200)            .assert_equal("body.msg", "ok")        ),    ]​​if __name__ == "__main__":    TestCaseDoctest().test_start()​

执行httprunner测试用例

使用hrun doctest_test.py 或者 pytest doctest_test.py 均可执行测试用例。

03a61673e5b8bed64f46c248ad12dd96.png
C:githubbaidutesthar>hrun doctest_test.py2020-08-11 15:01:13.457c:programspythonpython38libsite-packages甥汲楬b3equest.py:171: InvalidProxyConfigurationWarning: Your proxy configuration specified an HTTPS scheme for the proxy. Are you sure you want to use HTTPS to contact the proxy? This most likely indicates an error in your configuration. Read this issue for more info: https://github.com/urllib3/urllib3/issues/1850  return self.urlopen(method, url, **extra_kw) | INFO     | httprunner.make:__make:512 - make path: C:githubbaidutesthardoctest_test.py2020-08-11 15:01:13.495 | INFO     | httprunner.make:format_pytest_with_black:170 - format pytest cases with black ...No Path provided. Nothing to do 2020-08-11 15:01:13.814 | INFO     | httprunner.cli:main_run:56 - start to run tests with pytest. HttpRunner version: 3.1.4================================================= test session starts =================================================platform win32 -- Python 3.8.5, pytest-5.4.3, py-1.9.0, pluggy-0.13.1rootdir: C:githubbaidutestharplugins: forked-1.3.0, metadata-1.10.0, rerunfailures-9.0, allure-pytest-2.8.17, assume-2.2.1, html-2.1.1, xdist-1.34.0collected 1 item​doctest_test.py .                                                                                                [100%]​================================================== 1 passed in 0.93s ==================================================​C:githubbaidutesthar>pytest doctest_test.py================================================= test session starts =================================================platform win32 -- Python 3.8.5, pytest-5.4.3, py-1.9.0, pluggy-0.13.1rootdir: C:githubbaidutestharplugins: forked-1.3.0, metadata-1.10.0, rerunfailures-9.0, allure-pytest-2.8.17, assume-2.2.1, html-2.1.1, xdist-1.34.0collected 1 item​doctest_test.py .                                                                                                [100%]​================================================== 1 passed in 0.84s ==================================================​

生成接口测试报告

安装httprunner模块自动安装了pytest_html模块,可使用pytest doctest_test.py --html=reports.html 命令执行用例并生成报告

c76fcb2570e0e29abd1fe42ea49b7062.png
3613cc3f4afa4ffe891aae0206765aa8.png
如图使用charles工具录制导出har文件C:githubbaidutesthar>pytest doctest_test.py  --html=reports.html================================================= test session starts =================================================platform win32 -- Python 3.8.5, pytest-5.4.3, py-1.9.0, pluggy-0.13.1rootdir: C:githubbaidutestharplugins: forked-1.3.0, metadata-1.10.0, rerunfailures-9.0, allure-pytest-2.8.17, assume-2.2.1, html-2.1.1, xdist-1.34.0collected 1 item​doctest_test.py .                                                                                                [100%]​-------------------------- generated html file: file://C:githubbaidutesthareports.html ---------------------------================================================== 1 passed in 0.93s ==================================================

reports测试报告:

8b7915229d432977234dac926b530bae.png

未完待续,下一节用例参数化与关联!!!!

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_39769675/article/details/111014698
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-14 17:26:05
  • 阅读 ( 969 )
  • 分类:Go开源项目

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢