• httprunner3.x详细教程三(httprunner中testcase的构造)


    下面这段话是从官网上copy的,我会讲一下我的理解。如果有不对的地方欢迎留言。

                                                                                                                                                                            --成都-阿木木

     **欢迎加入测试交流群:自动化测试-夜行者(816489363)进行交流学习QAQ**

    HttpRunner v3.x支持三种测试用例格式pytest,YAML和JSON。强烈建议以pytest格式而不是以前的YAML/JSON格式编写和维护测试用例。

    相互转换格式关系如下图所示:

    记录并生成测试用例

    如果SUT(被测系统)准备就绪,最有效的方法是先捕获HTTP流量,然后使用HAR文件生成测试用例。请参阅以Record & Generate testcase获取更多详细信息。

    然后,基于生成的pytest测试用例,您可以根据需要进行一些调整,因此您需要了解测试用例格式的详细信息。

    测试用例结构

    每个测试用例都是的子类HttpRunner,并且必须具有两个类属性:config和teststeps。

    • 配置:配置测试用例级别设置,其中包括base_url,verify,variables,export。
    • teststeps:teststep(List[Step])的列表,每个步骤都对应一个API请求或另一个测试用例引用调用。此外,variables/ extract/ validate/ hooks机制支持,可制作十分复杂的测试方案,可以参数传递、参数提取、断言、以及其他hook机制,可以自定义钩子函数,也支持pytest和、locust的相关操作,例如:我们可以增加一个pytest.ini文件,在其中进行测试用例目录检索的操作等

    chain call

    HttpRunner v3.x的最强大功能之一是chain call,您无需记住任何测试用例格式的详细信息,并且在IDE中编写测试用例时就可以智能地完成。其实就是IDEA的api代码自动补全,让大家不需要去记那么多的函数名。

    config

    每个测试用例都应该有一个config部分,您可以在其中配置测试用例级别的设置。

    name(必填)

    指定测试用例名称。这将显示在执行日志和测试报告中。

    base_url(可选)

    指定SUT的通用架构和主机部分,例如https://postman-echo.com。如果base_url指定,则teststep中的url只能设置相对路径部分。如果要在不同的SUT环境之间切换,这将特别有用。

    variables(可选)

    指定测试用例的公共变量。每个测试步骤都可以引用未在步骤变量中设置的配置变量。换句话说,步骤变量比配置变量具有更高的优先级。

    verify (可选)

    指定是否验证服务器的TLS证书。如果我们想记录测试用例执行的HTTP流量,这将特别有用,因为如果没有设置verify或将其设置为True,则会发生SSLError。

    SSLError(SSLCertVerificationError(1,'[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:证书链中的自签名证书(_ssl.c:1076)')

    export (可选)

    指定导出的测试用例会话变量。将每个测试用例视为一个黑盒,config variables是输入部分,而config export是输出部分。特别是,当一个测试用例在另一个测试用例的步骤中被引用,并且将被提取一些会话变量以在后续测试步骤中使用时,则提取的会话变量应在配置export部分中进行配置。将测试用例的某些变量指定为全局变量。(PS:不配置export在另一个引用类中进行该累的变量调用时,直接export也是可以的,最好还是配置一下)

    注意:为简化起见,不推荐使用HttpRunner v2.x中的API概念。您可以将API视为只有一个请求步骤的测试用例。

    下图的意思是,我们有一个测试套件testsuite,套件中会有很多的测试用例testcase,testcase之间可以相互引用teststep,通过with_jmespath进行参数的提取,通过call引用其他测试用例类,然后通过export引用其他测试用例的变量

    teststeps中会有很多step,也就是常说的测试步骤,一个step中只有RunRequest或者RunTestCase,step的先后顺序,有step的前后控制,由step所处的位置由上到下执行。

    RunRequest(名称)

    RunRequest 在一个步骤中用于向API发出请求,并对响应进行一些提取或验证。

    .name   

    RunRequest 的参数用于指定测试步骤名称,该名称将显示在执行日志和测试报告中。

    .with_variables

    指定测试步骤变量。每个步骤的变量都是独立的,因此,如果要在多个步骤中共享变量,则应在配置变量中定义变量。此外,步骤变量将覆盖配置变量中具有相同名称的变量。(PS:注意参数传递的格式使用**{},使用关键字参数解包的方式进行参数传递给with_variables),参数引用使用"$变量名",如果是函数引用使用"${函数名()}"

    method(url)

    指定HTTP方法和SUT的URL。这些对应于method和url参数requests.request

    如果base_url在config中设置,则url只能设置相对路径部分。如果在Config中设置了baseurl,method中只能设置相对路径,可选参数为get/post/put/delete/等。

    .with_params

    指定请求网址的查询字符串。这对应于的params参数requests.request

    .with_headers

    为请求指定HTTP标头。这对应于的headers参数requests.request

    .with_cookies

    指定HTTP请求cookie。这对应于的cookies参数requests.request

    .with_data

    指定HTTP请求正文。这对应于的data参数requests.request

    .with_json

    在json中指定HTTP请求正文。这对应于的json参数requests.request

    extract(数据提取)

    .WITH_JMESPATH

    使用jmespath提取JSON响应主体。

    with_jmespath(jmes_path:文字,var_name:文字)

    • jmes_path:jmespath表达式,有关更多详细信息,请参考JMESPath教程
    • var_name:存储提取值的变量名,可以在后续测试步骤中引用它

    validate

    .ASSERT_XXX

    使用jmespath提取JSON响应主体并使用期望值进行验证。

    assert_XXX(jmes_path:文本,期望值:任何,消息:文本=“”)

    • jmes_path:jmespath表达式,有关更多详细信息,请参考JMESPath教程
    • Expected_value:指定的期望值,变量或函数引用也可以在此处使用
    • 消息(可选):用于指示断言错误的原因

    RunTestCase(名称)

    RunTestCase 在一个步骤中用于引用另一个测试用例调用。

    .name 

    RunTestCase 的参数用于指定测试步骤名称,该名称将显示在执行日志和测试报告中。

    .with_variables

    指定测试步骤变量。每个步骤的变量都是独立的,因此,如果要在多个步骤中共享变量,则应在配置变量中定义变量。此外,步骤变量将覆盖配置变量中具有相同名称的变量。

    .call

    指定引用的测试用例类。你在引用另一个测试用例的step中的参数时,需要先指定引用的测试用例类

    .export

    指定会话变量名称以从引用的测试用例中导出。导出的变量可以通过后续测试步骤step进行引用。导出的是step中的jmespath提取的变量,export之后,这个变量是全局变量,但是不能再confg中进行设置,因为测试类的引用是在step中进行的,而类的初始化是先初始化config,然后初始化teststeps,所以参数的传递在step之间

    **欢迎加入测试交流群:自动化测试-夜行者(816489363)进行交流学习QAQ**

  • 相关阅读:
    研究显示:众多网上零售商未遵循Web优化基本准则
    坚果云开发团队分享高效代码审查经验
    不应忽视的HTML优化
    开源网络分析工具TCP Traffic Analyzer
    Web 2.0应用客户端性能问题十大根源
    W3C宣布成立Web性能工作组
    Google C++规范
    Yahoo推出开源YUI跨浏览器测试工具Yeti
    比较牛的一个字符画
    python调用windows下的应用程序的方法
  • 原文地址:https://www.cnblogs.com/chineseluo/p/13703946.html
Copyright © 2020-2023  润新知