用例设计原则
  • py文件名以test_开头或者_test结尾
  • 函数名以test_开头
  • 类名以Test开头,并且不能有init初始化方法
  • 所有的包pakege必须有_init_.py文件
 
pycharm设置pytest 运行
settings → Tools → Python Integrated Tools → Testing / 将 default test runner 设置为pytest
 
pytest用例-Config类
config类的方法
base_url:base_url 指定
variables:全局变量指定
export:指定导出的测试用例会话变量暴露出来设为全局变量
pytest用例导包
 
#导包
from httprunner import HttpRunner # httprunner类,测试基类
from httprunner import Config #config类
from httprunner import Step # 用例步骤
from httprunner import RunRequest #请求
from httprunner import RunTestCase # 引入测试用例
HttpRunner类
#httprunner类源码部分
class HttpRunner(object):
config: Config
teststeps: List[Step]
...
'''
httprunner类的属性config 指向了 Config类,teststeps指向了list里面的Setp
'''
#config类源码
class Config(object):
def __init__(self, name: Text):
self.__name = name # 初始化name变量,传入用例名称
self.__variables = {} # 全局变量
self.__base_url = "" #base_url
self.__verify = False #https证书开关
self.__export = [] #全局变量提取
self.__weight = 1 caller_frame = inspect.stack()[1]
self.__path = caller_frame.filename '''
以上初始化变量,除了name是直接传入
其余变量在源码中下方都有对应的同名的函数处理,所有我们用Config类的时候
Config是链式调用,类传入用例名称,其余的直接调用对应方法
'''
 
pytest用例编写
from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase

# 继承Httprunner类
class TestLogin(HttpRunner):
config = (Config('登录用例') # 用例名称
.base_url('https://xxx-xxx.com') # 域名地址
.verify(False) # https验证开关
.variables(**{'user': 'test', 'pwd': 123456}) # 全局变量
.export('token') # 将token设置为全局变量
)
# 测试步骤,是一个list,里面可以有多个步骤用例
teststeps = [
Step( # 每一个step,代表一个用例 # RunRequest类用来发送请求
RunRequest('step-login') # 步骤名称
.post('/') # 请求方式 / 接口地址
.with_data({'username': '$user', 'password': '$pwd'}) # 请求参数
# 返回值提取
.extract()
# 返回值使用jmespath表达式提取: 表达式,变量名
.with_jmespath('body.token', 'token') # 断言
.validate()
.assert_equal('body.code', 0, message='code不正确')
)
]
RunRequest(测试步骤)
#get请求
.with_params(**{'page':1,'size':2}) #post请求 Content-Type:application/x-www-form-urlencoded
.with_data({'page':1,'size':2})
#post请求 Content-Type:application/json
.with_json({'page':1,'size':2})
RunTestCase导入用例

from .publish_test import TestCasePublish  # 导入要引入的用例类

#在步骤中引入
Step(
RunTestCase("step-登录")
.call(TestCasePublishstatus) # 导入用例类
.export(*['uid']) #要提取的变量 )
 

7.httprunner-pytest风格用例的更多相关文章

  1. Pytest执行用例报Hint: make sure your test modules/packages have valid Python names.

    近日,使用Pytest+Appium 实现APP端UI自动化,遇到Pytest收集用例失败的情况. 报错信息如下: test_room.py:None (test_room.py) ImportErr ...

  2. pytest 给用例打标签

    1.给用例添加自定义标签命令:@pytest.mark.tagname     #tagname是自定义的标签名 import pytest class TestClass(): @pytest.ma ...

  3. pytest执行用例时从conftest.py抛出ModuleNotFoundError:No module named 'XXX'异常的解决办法

    一.问题描述 在项目根目录下执行整个测试用例,直接从conftest.py模块中抛出了ModuleNotFoundError:No module named 'TestDatas'的异常: 二.解决方 ...

  4. pytest执行用例:明明只写了5个测试用例, 怎么收集到33个!?

    pytest收集测试用例的顺序: 同一个项目中搜索所有以test_开头的测试文件.test_开头的测试类.test_开头的测试函数 执行测试用例的顺序: 是按照先数据(0~9)>再字母(a~z) ...

  5. pytest 失败用例重试

    https://www.cnblogs.com/jinzhuduoduo/articles/7017405.html http://www.lxway.com/445949491.htm https: ...

  6. pytest之收集用例规则与运行指定用例

    前言 上篇文章相信大家已经了解了pytest在cmd下结合各种命令行参数如何运行测试用例,并输出我们想要看到的信息.那么今天会讲解一下pytest是如何收集我们写好的用例?我们又有哪些方式来运行单个用 ...

  7. Pytest权威教程26-示例和自定义技巧

    目录 示例和自定义技巧 返回: Pytest权威教程 示例和自定义技巧 这是一个(不断增长的)示例列表.如果你需要更多示例或有疑问,请联系我们.另请参阅包含许多示例代码段的 综合文档.此外,stack ...

  8. Pytest学习笔记(二) 用例执行规则

    在用pytest执行用例时,可以按照如下场景来执行 1.执行目录及其子目录下的所有用例 pytest filename\ 2.执行某一个py文件下的用例 pytest filename.py 3.-k ...

  9. pytest文档32-allure描述用例详细讲解

    前言 pytest+allure是最完美的结合了,关于allure的使用,本篇做一个总结. allure报告可以很多详细的信息描述测试用例,包括epic.feature.story.title.iss ...

随机推荐

  1. SP6779 GSS7 - Can you answer these queries VII(线段树,树链剖分)

    水题,只是坑点多,\(tag\)为\(0\)时可能也要\(pushdown\),所以要\(bool\)标记是否需要.最后树链剖分询问时注意线段有向!!! #include <cstring> ...

  2. Luogu4427 [BJOI2018]求和 (树上差分)

    预处理,树上差分.注意深度减一 #include <cstdio> #include <iostream> #include <cstring> #include ...

  3. Luogu2251 质量检测 (ST表)

    我怎么开始划水了... #include <iostream> #include <cstdio> #include <cstring> #include < ...

  4. JavaScript 异步编程(一):认识异步编程

    前言 "异步"的大规模流行是在 Web 2.0浪潮中,它伴随着 AJAX 席卷了 Web.前端充斥了各种 AJAX 和事件,这些都是典型的异步应用场景.现在的 Web 应用已经不再 ...

  5. 配置Windows server dhcp与AD域对接并使用Win1创的用户登录Win2

    创建两台windows_server_2012 创建步骤链接(https://www.cnblogs.com/zhengyan6/p/16338084.html) 注意:所有虚拟机都要在同意网段 配置 ...

  6. HCNP Routing&Switching之IP安全

    前文我们了解了DHCP安全相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16637627.html:今天我们来聊一聊IP安全相关话题: 技术背景 随着 ...

  7. rh358 003 ansible部署双网卡绑定 DNS原理 bind正向解析

    双网卡绑定 绑定多张网卡成为逻辑口,从而实现链路冗余,以及数据流量的负载均衡 1.创建team口 [root@servera ~]# nmcli connection add type team co ...

  8. KingbaseES V8R3集群运维案例之---主库系统down failover切换过程分析

    ​ 案例说明: KingbaseES V8R3集群failover时两个cluster都会触发,但只有一个cluster会调用脚本去执行真正的切换流程,另一个有对应的打印,但不会调用脚本,只是走相关的 ...

  9. PostgreSQL 绑定变量窥探

    今天我们要探讨的是 custom执行计划和通用执行计划.这一技术在 Oracle中被称为绑定变量窥视.但 Kingbase中并没有这样的定义,更严格地说,Kingbase叫做custom执行计划和通用 ...

  10. PLSQL 与 PLPGSQL

    KingbaseES 为了更好地适应用户的oracle 应用,实现了对 plsql 的支持,用户可以根据需要使用 plsql 或 plpgsql. 以下简要介绍下二者的差异 一.格式差异 1.plpg ...