httprunner学习19-跳过用例skip/skipIf/skipUnless

前言

在实际工作中,我们有时候会需要对测试用例加判断,比如某个接口功能暂时去掉了,我们希望对这个用例skip不去执行。
当其它的接口依赖于登陆接口返回的token时候,如果登陆都失败了,后面的接口,我们希望也不用执行了。httprunner 中可以用 skipskipIf 去实现此功能。
unittest提供了一些跳过指定用例的方法

  • @unittest.skip(reason):强制跳转。reason是跳转原因
  • @unittest.skipIf(condition, reason):condition为True的时候跳转
  • @unittest.skipUnless(condition, reason):condition为False的时候跳转
  • @unittest.expectedFailure:如果test失败了,这个test不计入失败的case数目

httprunner 框架延用了 skip/skipIf/skipUnless 三个功能

skip跳过用例

skip是无条件跳过用例,不执行此用例,后面可以加上描述跳过此用例的原因

- config:
    name: httpbin api test
    request:
        base_url: http://www.httpbin.org
- test:
    name: get request
    skip: 此功能已去除,skip掉
    times: 1
    request:
        url: /get
        method: GET
    validate:
        - eq: [status_code,200]

执行结果会显示此用例已经 skipped 跳过了

D:\soft>hrun test_httpbin.yml
get request
s

----------------------------------------------------------------------
Ran 1 test in 0.002s

OK (skipped=1)
INFO     Start to render Html report ...
INFO     Generated Html report: D:\soft\reports\1571152267.html

skipIf 和 skipUnless

比如我们现在的业务场景是,有个登陆的接口获取token,其它的接口用例依赖与登陆的token,可以在debugtalk.py写个获取登陆的函数获取token值
具体参考前面这篇https://www.cnblogs.com/yoyoketang/p/11588363.html

import requests

host = "http://127.0.0.1:8000/"

def token(user="test", psw="123456"):
    '''
    登录获取token         # # 上海悠悠,QQ交流群:750815713
    :param user: 用户名
    :param psw: 密码
    :return: token
    '''
    login_url = host+"api/v1/login/"
    headers = {
        "Content-Type": "application/json"
    }
    body = {
        "username": user,
        "password": psw
    }
    r = requests.post(login_url, headers=headers, json=body)
    try:
        return_token = r.json()["token"]
    except:
        print("大兄弟,返回的不是标准json格式,或者没取到token, 别问我为什么报错, 因为返回内容:\n %s" % r.text)
        return_token = ''
    return return_token

if __name__ == "__main__":
    print("获取到token值:%s" % token())

函数 token() 实现的功能是获取到返回token值,登陆失败没token值,或者token值为空时默认返回None。那么获取到为True,没获取到为False。

  • skipIf 条件成立,返回值为True时候成立
  • skipUnless 条件不成立,返回值为False时候成立

接下来在用例里面写个判断,当函数 token() 为False的时候跳过用例,所以这里用skipUnless。
先调用 ${token(test1, 12345622) 函数,把返回值传给变量 token , 后面的用例全部引用 $token 这个变量就可以了。

- config:
    name: logincase
    variables:
        - token: ${token(test1, 123456)}

# 上海悠悠,QQ交流群:750815713
- test:
    name: get user info case1
    skipUnless: $token
    request:
        url: http://127.0.0.1:8000/api/v1/user/info/
        method: GET
        headers:
            Content-Type: application/json
            User-Agent: python-requests/2.18.4
            Authorization: Token $token         # 引用token
    validate:
        - eq: [status_code, 200]
        - eq: [headers.Content-Type, application/json]
        - eq: [content.0.age, 20]
        - eq: [content.0.name, yoyo]
        - eq: [content.0.mail, [email protected]]

接下来执行用例,是可以正常运行的

D:\soft\untitled\projectdemo>hrun test_skip_demo.yml
INFO     Loading environment variables from D:\soft\untitled\projectdemo\.env
get user info case1
INFO     GET http://127.0.0.1:8000/api/v1/user/info/
INFO     status_code: 200, response_time(ms): 261.48 ms, response_length: 190 bytes
INFO     start to validate.
.

----------------------------------------------------------------------
Ran 1 test in 0.276s

OK
INFO     Start to render Html report ...
INFO     Generated Html report: D:\soft\untitled\projectdemo\reports\1571153932.html

把用例里面 token: ${token(test1, 123456111)} 密码改成错误的密码,这样获取不到token值,就会跳过此用例

D:\soft\untitled\projectdemo>hrun test_skip_demo.yml
INFO     Loading environment variables from D:\soft\untitled\projectdemo\.env
大兄弟,返回的不是标准json格式,获取没取到token, 别问我为什么报错, 返回内容:
 codemsg
get user info case1
s

----------------------------------------------------------------------
Ran 1 test in 0.001s

OK (skipped=1)
INFO     Start to render Html report ...
INFO     Generated Html report: D:\soft\untitled\projectdemo\reports\1571154164.html

skipIf 的用法和 skipUnless 恰好相反。

原文地址:https://www.cnblogs.com/yoyoketang/p/11681970.html

时间: 2024-10-30 04:18:37

httprunner学习19-跳过用例skip/skipIf/skipUnless的相关文章

跳过用例skip

1.装饰器,放在函数前面,跳过用例 @pytest.mark.skip(reason="no way of currently testing this") import pytest def test1(): print('操作1') print("-----------------------------------------------") @pytest.mark.skip(reason="no way of currently testing

httprunner学习18-重复执行用例

前言 使用httprunner做接口测试过程中,在工作中会遇到这种场景,发现某个接口不稳定,想重复运行100次用例,甚至1000次,看成功率. yml脚本 - config: name: httpbin api test request: base_url: http://www.httpbin.org - test: name: get request request: url: /get method: GET validate: - eq: [status_code,200] 执行 hru

Selenium2+python自动化70-unittest之跳过用例(skip)【转载】

前言 当测试用例写完后,有些模块有改动时候,会影响到部分用例的执行,这个时候我们希望暂时跳过这些用例. 或者前面某个功能运行失败了,后面的几个用例是依赖于这个功能的用例,如果第一步就失败了,后面的用例也就没必要去执行了,直接跳过就行,节省用例执行时间. 一.skip装饰器 skip装饰器一共有四个    @unittest.skip(reason) Unconditionally skip the decorated test. reason should describe why the te

HttpRunner学习2--用例格式和简单使用

HttpRunner中,测试用例支持两种文件格式:YAML 和 JSON.两种格式的用例是完全等价的,对于相同的信息内容,使用 YAML /JSON 得到的测试结果和报告也是一致的. YAML格式的用例 以某快递接口为例,这里以 YAML 格式进行说明(test_kuaidi.yml): - config: name: kuaidi100 api test request: base_url: http://www.kuaidi100.com - test: name: query test r

unittest---unittest跳过用例

我们在做自动化测试的时候,可能会遇到一些用例中间不用回归,想要进行跳过.直接注释的话,代码量修改过大,显然这个方法不妥,哪还有什么方法?unittest这个自动化框架可以帮助我们完成这个操作 自动跳过用例 unittest中提供了一些跳过用例的装饰器方法.我们可以通过这些装饰器来帮我们完成这些操作 @unittest.skip() 表示:无条件跳过用例 def skip(reason): """ 无条件地跳过用例 """ def decorato

dinic算法学习(以poj1273为例)

Dinic 算法模板 Dinic算法是一种比较容易实现的,相对比较快的最大流算法. 求最大流的本质,就是不停的寻找增广路径.直到找不到增广路径为止. 对于这个一般性的过程,Dinic算法的优化如下: (1)Dinic算法首先对图进行一次BFS,然后在BFS生成的层次图中进行多次DFS. 层次图的意思就是,只有在BFS树中深度相差1的节点才是连接的. 这就切断了原有的图中的许多不必要的连接.很牛逼! 这是需要证明的,估计证明也很复杂. (2)除此之外,每次DFS完后,会找到路径中容量最小的一条边.

katalon系列十三:5.10新增跳过用例&命令行赋值全局变量

Katalon Studio升级到5.10版本了,这次新增了2个很实用的功能:一.跳过用例在Listener中新增了跳过用例方法,Listener类似于JUnit4的annotation中的@Before.@After.@BeforeClass.@AfterClass,python单元测试框架unittest中的setUp().tearDown(),不熟悉的同学可以先学个测试框架.跳过的使用在执行结果中的状态为SKIPPED,示例代码如下: 二.命令行赋值全局变量Katalon中的Project

JavaWeb学习——页面跳转方式

JavaWeb学习——页面跳转方式 摘要:本文主要学习了请求转发和响应重定向,以及两者之间的区别. 请求转发 相关方法 使用HttpServletRequest对象的 getRequestDispatcher(String path) 方法获取RequestDispatcher类型的转发器. 使用RequestDispatcher转发器的 forward(ServletRequest request, ServletResponse response) 方法进行转发. 实例 1 @Overrid

python unittest--TestCase类总结4,skip跳过用例或者跳过测试类

跳过测试类: 跳过某个用例: 如果发现是跳过时,就不会执行setup和teardown,就执行停止执行用例了 原文地址:https://www.cnblogs.com/dmtz/p/11005309.html