2024年自动生成测试用例_接口测试用例自动生成工具_用例自动化生成工具,HTTPS面试常问全解析

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

config = Config("testcase description").verify(False)

teststeps = [
    Step(
        RunRequest("/")
        .get("https://www.baidu.com/")
        .with_headers(
            **{
                "Host": "www.baidu.com",
                "Connection": "keep-alive",
                "Cache-Control": "max-age=0",
                "sec-ch-ua": '"Chromium";v="88", "Google Chrome";v="88", ";Not A Brand";v="99"',
                "sec-ch-ua-mobile": "?0",
                "Upgrade-Insecure-Requests": "1",
                "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36",
                "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
                "Sec-Fetch-Site": "none",
                "Sec-Fetch-Mode": "navigate",
                "Sec-Fetch-User": "?1",
                "Sec-Fetch-Dest": "document",
                "Accept-Encoding": "gzip, deflate, br",
                "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
                "Cookie": "PSTM=1610459846; BAIDUID=A40AD6AD806FBBED1033903732FFA453:FG=1; BD_UPN=123253; BIDUPSID=898B917A8EF92E036B0F06DC792638A1; __yjs_duid=1_c391922164c20246fd49e4ad821d46c41610613507042; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=33423_33513_33403_33273_33594_33585_26350_33568; delPer=0; BD_CK_SAM=1; PSINO=5; BAIDUID_BFESS=A40AD6AD806FBBED1033903732FFA453:FG=1; COOKIE_SESSION=86630_1_9_6_41_5_0_0_8_2_1_0_0_0_71_0_1612340974_1611912344_1612427533%7C9%23262013_235_1611912339%7C9; BD_HOME=1; ZD_ENTRY=baidu; BA_HECTOR=20ag2180aga18k21mm1g1pegu0r",
            }
        )
        .with_cookies(
            **{
                "PSTM": "1610459846",
                "BAIDUID": "A40AD6AD806FBBED1033903732FFA453:FG=1",
                "BD_UPN": "123253",
                "BIDUPSID": "898B917A8EF92E036B0F06DC792638A1",
                "__yjs_duid": "1_c391922164c20246fd49e4ad821d46c41610613507042",
                "BDORZ": "B490B5EBF6F3CD402E515D22BCDA1598",
                "H_PS_PSSID": "33423_33513_33403_33273_33594_33585_26350_33568",
                "delPer": "0",
                "BD_CK_SAM": "1",
                "PSINO": "5",
                "BAIDUID_BFESS": "A40AD6AD806FBBED1033903732FFA453:FG=1",
                "COOKIE_SESSION": "86630_1_9_6_41_5_0_0_8_2_1_0_0_0_71_0_1612340974_1611912344_1612427533%7C9%23262013_235_1611912339%7C9",
                "BD_HOME": "1",
                "ZD_ENTRY": "baidu",
                "BA_HECTOR": "20ag2180aga18k21mm1g1pegu0r",
            }
        )
        .validate()
        .assert_equal("status_code", 200)
        .assert_equal('headers."Content-Type"', "text/html;charset=utf-8")
    ),
]

if name == “main”:
TestCaseBaidu().test_start()



可以使用命令`hrun`或`pytest`运行,实际上,hrun是pytest的封装,效果基本相同。



(httprunner_env) ➜ har hrun baidu_test.py
2021-02-05 14:03:39.279 | INFO | httprunner.make:__make:512 - make path: /Users/jkc/hrun/hrun_demo/har/baidu_test.py
2021-02-05 14:03:39.279 | INFO | httprunner.make:format_pytest_with_black:170 - format pytest cases with black …
No Path provided. Nothing to do 😴
2021-02-05 14:03:39.457 | INFO | httprunner.cli:main_run:56 - start to run tests with pytest. HttpRunner version: 3.1.4
============================================= test session starts =============================================
platform darwin – Python 3.7.6, pytest-5.4.3, py-1.10.0, pluggy-0.13.1
rootdir: /Users/songyingkai/hrun/hrun_demo/har
plugins: metadata-1.11.0, html-2.1.1
collected 1 item

baidu_test.py . [100%]

============================================== 1 passed in 0.25s ==============================================
Sentry is attempting to send 0 pending error messages
Waiting up to 2 seconds
Press Ctrl-C to quit




(httprunner_env) ➜ har pytest baidu_test.py
============================================= test session starts =============================================
platform darwin – Python 3.7.6, pytest-5.4.3, py-1.10.0, pluggy-0.13.1
rootdir: /Users/songyingkai/hrun/hrun_demo/har
plugins: metadata-1.11.0, html-2.1.1
collected 1 item

baidu_test.py . [100%]

============================================== warnings summary ===============================================
baidu_test.py::TestCaseBaidu::test_start
/Users/songyingkai/.virtualenvs/httprunner_env/lib/python3.7/site-packages/urllib3/connectionpool.py:1020: InsecureRequestWarning: Unverified HTTPS request is being made to host ‘www.baidu.com’. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecureRequestWarning,

– Docs: https://docs.pytest.org/en/latest/warnings.html
======================================== 1 passed, 1 warning in 0.47s =========================================



## 生成测试用例(YAML/JSON)


当然,你也可以生成`YAML/JSON`测试用例。 只需要在`har2case`命令后 添加`-2y/--to-yml`或`-2j/--to-json`


### 生成YAML格式:



har har2case baidu.har -2y




(httprunner_env) ➜ har har2case baidu.har -2y
2021-02-05 14:23:48.484 | INFO | httprunner.ext.har2case.core:gen_testcase:356 - Start to generate testcase from /Users/jkc/hrun/hrun_demo/har/baidu.har
2021-02-05 14:23:48.484 | INFO | httprunner.ext.har2case.core:_make_testcase:347 - Extract info from HAR file and prepare for testcase.
2021-02-05 14:23:48.488 | INFO | httprunner.ext.har2case.utils:dump_yaml:108 - dump testcase to YAML format.
2021-02-05 14:23:48.492 | INFO | httprunner.ext.har2case.utils:dump_yaml:115 - Generate YAML testcase successfully: /Users/jkc/hrun/hrun_demo/har/baidu.yml
2021-02-05 14:23:48.493 | INFO | httprunner.ext.har2case.core:gen_testcase:377 - generated testcase: /Users/jkc/hrun/hrun_demo/har/baidu.yml
Sentry is attempting to send 0 pending error messages
Waiting up to 2 seconds
Press Ctrl-C to quit



查看生成的yaml文件



config:
name: testcase description
variables: {}
verify: false
teststeps:

  • name: /
    request:
    cookies:
    BAIDUID: A40AD6AD806FBBED1033903732FFA453:FG=1
    BAIDUID_BFESS: A40AD6AD806FBBED1033903732FFA453:FG=1
    BA_HECTOR: 20ag2180aga18k21mm1g1pegu0r
    BDORZ: B490B5EBF6F3CD402E515D22BCDA1598
    BD_CK_SAM: ‘1’
    BD_HOME: ‘1’
    BD_UPN: ‘123253’
    BIDUPSID: 898B917A8EF92E036B0F06DC792638A1
    COOKIE_SESSION: 86630_1_9_6_41_5_0_0_8_2_1_0_0_0_71_0_1612340974_1611912344_1612427533%7C9%23262013_235_1611912339%7C9
    H_PS_PSSID: ‘33423_33513_33403_33273_33594_33585_26350_33568’
    PSINO: ‘5’
    PSTM: ‘1610459846’
    ZD_ENTRY: baidu
    __yjs_duid: 1_c391922164c20246fd49e4ad821d46c41610613507042
    delPer: ‘0’
    headers:
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
    Cache-Control: max-age=0
    Connection: keep-alive
    Cookie: PSTM=1610459846; BAIDUID=A40AD6AD806FBBED1033903732FFA453:FG=1;
    BD_UPN=123253; BIDUPSID=898B917A8EF92E036B0F06DC792638A1; __yjs_duid=1_c391922164c20246fd49e4ad821d46c41610613507042;
    BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=33423_33513_33403_33273_33594_33585_26350_33568;
    delPer=0; BD_CK_SAM=1; PSINO=5; BAIDUID_BFESS=A40AD6AD806FBBED1033903732FFA453:FG=1;
    COOKIE_SESSION=86630_1_9_6_41_5_0_0_8_2_1_0_0_0_71_0_1612340974_1611912344_1612427533%7C9%23262013_235_1611912339%7C9;
    BD_HOME=1; ZD_ENTRY=baidu; BA_HECTOR=20ag2180aga18k21mm1g1pegu0r
    Host: www.baidu.com
    Sec-Fetch-Dest: document
    Sec-Fetch-Mode: navigate
    Sec-Fetch-Site: none
    Sec-Fetch-User: ?1
    Upgrade-Insecure-Requests: ‘1’
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36
    (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36
    sec-ch-ua: ‘“Chromium”;v=“88”, “Google Chrome”;v=“88”, “;Not A Brand”;v=“99”’
    sec-ch-ua-mobile: ?0
    method: GET
    url: https://www.baidu.com/
    validate:
    • eq:
      • status_code
      • 200
    • eq:
      • headers.Content-Type
      • text/html;charset=utf-8


### 生成JSON格式:



har2case baidu.har -2j



(httprunner_env) ➜ har har2case baidu.har -2j
2021-02-05 14:25:35.729 | INFO | httprunner.ext.har2case.core:gen_testcase:356 - Start to generate testcase from /Users/jkc/hrun/hrun_demo/har/baidu.har
2021-02-05 14:25:35.730 | INFO | httprunner.ext.har2case.core:_make_testcase:347 - Extract info from HAR file and prepare for testcase.
2021-02-05 14:25:35.732 | INFO | httprunner.ext.har2case.utils:dump_json:121 - dump testcase to JSON format.
2021-02-05 14:25:35.733 | INFO | httprunner.ext.har2case.utils:dump_json:130 - Generate JSON testcase successfully: /Users/jkc/hrun/hrun_demo/har/baidu.json
2021-02-05 14:25:35.733 | INFO | httprunner.ext.har2case.core:gen_testcase:377 - generated testcase: /Users/jkc/hrun/hrun_demo/har/baidu.json
Sentry is attempting to send 0 pending error messages
Waiting up to 2 seconds
Press Ctrl-C to quit


查看生成的json格式



{
“config”: {
“name”: “testcase description”,
“variables”: {},
“verify”: false
},
“teststeps”: [
{
“name”: “/”,
“request”: {
“url”: “https://www.baidu.com/”,
“method”: “GET”,
“cookies”: {
“PSTM”: “1610459846”,
“BAIDUID”: “A40AD6AD806FBBED1033903732FFA453:FG=1”,
“BD_UPN”: “123253”,
“BIDUPSID”: “898B917A8EF92E036B0F06DC792638A1”,
“__yjs_duid”: “1_c391922164c20246fd49e4ad821d46c41610613507042”,
“BDORZ”: “B490B5EBF6F3CD402E515D22BCDA1598”,
“H_PS_PSSID”: “33423_33513_33403_33273_33594_33585_26350_33568”,
“delPer”: “0”,
“BD_CK_SAM”: “1”,
“PSINO”: “5”,
“BAIDUID_BFESS”: “A40AD6AD806FBBED1033903732FFA453:FG=1”,
“COOKIE_SESSION”: “86630_1_9_6_41_5_0_0_8_2_1_0_0_0_71_0_1612340974_1611912344_1612427533%7C9%23262013_235_1611912339%7C9”,
“BD_HOME”: “1”,
“ZD_ENTRY”: “baidu”,
“BA_HECTOR”: “20ag2180aga18k21mm1g1pegu0r”
},
“headers”: {
“Host”: “www.baidu.com”,
“Connection”: “keep-alive”,
“Cache-Control”: “max-age=0”,
“sec-ch-ua”: "“Chromium”;v=“88”, “Google Chrome”;v=“88”, “;Not A Brand”;v=“99"”,
“sec-ch-ua-mobile”: “?0”,
“Upgrade-Insecure-Requests”: “1”,
“User-Agent”: “Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36”,
“Accept”: “text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9”,
“Sec-Fetch-Site”: “none”,
“Sec-Fetch-Mode”: “navigate”,
“Sec-Fetch-User”: “?1”,
“Sec-Fetch-Dest”: “document”,
“Accept-Encoding”: “gzip, deflate, br”,
“Accept-Language”: “zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7”,
“Cookie”: “PSTM=1610459846; BAIDUID=A40AD6AD806FBBED1033903732FFA453:FG=1; BD_UPN=123253; BIDUPSID=898B917A8EF92E036B0F06DC792638A1; __yjs_duid=1_c391922164c20246fd49e4ad821d46c41610613507042; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=33423_33513_33403_33273_33594_33585_26350_33568; delPer=0; BD_CK_SAM=1; PSINO=5; BAIDUID_BFESS=A40AD6AD806FBBED1033903732FFA453:FG=1; COOKIE_SESSION=86630_1_9_6_41_5_0_0_8_2_1_0_0_0_71_0_1612340974_1611912344_1612427533%7C9%23262013_235_1611912339%7C9; BD_HOME=1; ZD_ENTRY=baidu; BA_HECTOR=20ag2180aga18k21mm1g1pegu0r”
}
},
“validate”: [
{
“eq”: [
“status_code”,
200
]

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

44315459)]
[外链图片转存中…(img-nmtzkXqI-1714844315459)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以通过解析 Swagger 接口文档来自动生成接口测试用例。具体步骤如下: 1. 使用 `requests` 库向 Swagger 文档的 URL 发送 GET 请求,获取 Swagger 文档的 JSON 数据。 2. 解析 JSON 数据,获取每个接口的 URL、请求方法、请求参数和响应参数等信息。 3. 根据接口信息构造测试用例,并使用测试框架执行测试。 示例代码如下: ```python import requests # Swagger 文档地址 SWAGGER_URL = 'http://your.swagger.host/swagger.json' # 发送 GET 请求,获取 Swagger 文档 response = requests.get(SWAGGER_URL) # 解析 Swagger 文档中的接口信息 if response.status_code == 200: swagger_doc = response.json() paths = swagger_doc.get('paths', {}) for path, methods in paths.items(): for method, info in methods.items(): # 获取接口的 URL url = f'{SWAGGER_URL.rstrip("/")}{path}' # 获取接口的请求方法 http_method = method.upper() # 获取接口的请求参数 parameters = info.get('parameters', []) # 获取接口的响应参数 responses = info.get('responses', {}) # 构造测试用例 test_case = { 'name': f'{http_method.upper()} {url}', 'url': url, 'method': http_method, 'params': parameters, 'responses': responses } # TODO: 使用测试框架执行测试用例 else: print(f'Failed to get Swagger document. Status code: {response.status_code}') ``` 在上述代码中,我们使用 `requests` 库向 Swagger 文档的 URL 发送 GET 请求,获取 Swagger 文档的 JSON 数据。然后,解析 JSON 数据,获取每个接口的 URL、请求方法、请求参数和响应参数等信息。最后,根据接口信息构造测试用例,并使用测试框架执行测试。你可以根据需要对测试用例进行扩展和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值