pytest

参数化和数据驱动

a 夏天 提交于 2020-03-02 19:48:37
参数化和数据驱动 摘要: 参数化的使用 pytest.mark.parametrize()直接传参 数据驱动 外部文件:使用yaml 测试用例参数从外部文件获取 测试步骤从外部文件获取 参数化使用 @pytest.mark.parametrize(“search_words”, [‘游戏’, “hhdddx”]) 具体用例: from page . app import App class TestDemo : def setup ( self ) : self . main_page = App . start ( ) @pytest . mark . dependency ( ) def test_game_handle ( self ) : '''点击首页的游戏手柄,进入游戏中心''' self . game_center = self . main_page . click_game_handle ( ) # @pytest.mark.dependency(depends=["TestDemo::test_game_handle"]) @pytest . mark . parametrize ( "keyword" , [ '游戏' , "hhdddx" ] ) def test_game_search ( self , keyword ) : self . test

pytest中文文档:安装和入门

狂风中的少年 提交于 2020-03-02 08:10:49
pytest是一个使构建简单和可扩展测试变得容易的框架。测试具有表现力和可读性-不需要样板代码。数分钟内即可开始为您的应用程序或库进行小型单元测试或复杂的功能测试。 安装pytest 1、在命令行中运行以下命令: pip install -U pytest 2、检查您是否安装了正确的版本: $ pytest --version This is pytest version 5.x.y, imported from $PYTHON_PREFIX/lib/python3.6/site-packages/pytest/__init__.py 创建您的第一个测试 仅用四行代码创建一个简单的测试函数: # content of test_sample.py def func(x): return x + 1 def test_answer(): assert func(3) == 5 而已。您现在可以执行测试功能: $ pytest =========================== test session starts ============================ platform linux -- Python 3.x.y, pytest-5.x.y, py-1.x.y, pluggy-0.x.y cachedir: $PYTHON_PREFIX/.pytest

python中pytest的用法,pytest中fixture用法

落爺英雄遲暮 提交于 2020-02-29 09:59:57
p ytest 模块的使用 pytest 是第三方测试框架,是基于 unittest 的扩展框架,比 unittest 更简洁,更高效。 安装 pytest 模块 使用 pip install pytest 即可。安装好之后,到 cmd 中输入 pytest --version 检查是否安装成功。 pytest 运行方法 想要用 pytest 运行,首先要 import pytest 比如创建一个 demo.py 文件,内容为: import pytest # 导入包 def test_sucess(): # 定义第一个测试用例,assert 0表示断言失败 print("test sucess") assert 0 def test_fail(): # 定义第二个测试用例,没有assert,默认成功 print("test fail") if __name__ == "__main__": #定义一个列表,列表内容为测试文件名,也可以为元组,表示需要运行的文件为demo.py test_list = ['demo.py'] # 用pytest模块的main()方法,参数为上面定义好的列表或者元组。 pytest.main(test_list) # pytest.main(['-s','demo.py']) # 也可以这样写,这样写和上面那样写会运行结果会有所不同,可以自己试试看。

更好用的 Python 任务自动化工具:nox 官方教程

情到浓时终转凉″ 提交于 2020-02-27 08:22:05
本教程将引导你学会安装、配置和运行 Nox。 安装 Nox 可以通过pip轻松安装: python3-m pip install nox 你可能希望使用用户站点(user site)来避免对全局的 Python install 造成混乱: python3 -m pipinstall--user nox 或者,你也可以更精致,使用pipx: pipxinstall nox 无论用哪种方式,Nox 通常是要全局安装的,类似于 tox、pip和其它类似的工具。 如果你有兴趣在docker 内运行 nox,可以使用 DockerHub 上的thekevjames/nox镜像,它包含所有 nox 版本的构建与及所有支持的 Python 版本。 如果你想在GitHub Actions中运行 nox ,则可以使用Activatedleigh/setup-nox action,它将安装最新的 nox,并令 GitHub Actions 环境提供的所有 Python 版本可用。 编写配置文件 Nox 通过项目目录中一个名为 noxfile.py 的文件作配置 。这是一个 Python文件,定义了一组会话(sessions)。一个会话是一个环境和一组在这个环境中运行的命令。如果你熟悉 tox,会话就类似于它的环境。如果你熟悉 GNU Make,会话则类似于它的 target。 会话使用 @nox

Python 任务自动化工具:nox 的配置与 API

戏子无情 提交于 2020-02-27 02:19:34
英文 | Configuration & API 出处 | nox 官方文档 译者 | 豌豆花下猫@Python猫 Github地址: https://github.com/chinesehuazhou/nox_doc_cn 声明 :本翻译基于CC BY-NC-SA 4.0授权协议,内容略有改动,转载请保留原文出处,请勿用于商业或非法用途。 接上篇《 更好用的 Python 任务自动化工具:nox 官方教程 》 Noxfile Nox 默认在一个名为 noxfile.py 的文件中查找配置。在运行 nox 时,你可以使用 --noxfile 参数指定其它的文件。 定义会话 格式:session(func=None, python=None, py=None, reuse_venv=None, name=None, venv_backend=None),将被装饰的函数指定为一个会话。 Nox 会话是通过被 @nox.session 装饰的标准 Python 函数来配置的。例如: import nox @nox.session def tests(session): session.run('pytest') 会话描述 你可以使用 文档字符串 向会话中添加一个描述。第一行内容会在列出会话时显示。例如: import nox @nox.session def tests(session)

pytest的初始化清除操作

怎甘沉沦 提交于 2020-02-26 18:45:02
初始化清除操作:   用例级别:     def setup():     def teardown()   套件级别:     def setup_module()     def teardown_module()   类级别:   @classmethod   def setup_class(self)   @classmethod   def teardown_class(self)   执行顺序:套件 》 类级别 》用例级别 测试代码:    def setup_module(): print('套件级别的初始化操作') def teardown_module(): print('套件级别的清除操作') class TestSuite(): def setup(self): print('用例初始化操作') def teardown(self): print('用例清除操作') def test_001(self): print('测试用例1') def test_002(self): print('测试用例2') @classmethod def setup_class(self): print('这是类级别的初始化操作') @classmethod def teardown_class(self): print('这是类级别的清除操作') ''' 运行结果:

pytest特点与执行

怎甘沉沦 提交于 2020-02-26 18:35:59
pytest特点:   用例语言是纯python   不支持测试报告,但可以使用插件(pytest-html)   可以不导入pytest模块执行测试用例   兼容性强,可以执行unittest测试用例   pytest --help 查看帮助 pytest命名规则:   模块、函数、类与方法必须以test_开头   如果是嵌套套件,外层套件可以不以test开头,但内含的模块必须以test_开头 定义测试用例的方式:   模块.函数   类.方法:类必须以test开头,方法用例也需要test开头 执行测试用例:   pytest test_01.py   pytest tsdir   指定多个测试套件执行:pytest t1.py t2.py   根据目录名执行:pytest suite1 suite2   指定模块用例:tc/test_mod.py::TestClass::test_func   模糊搜索:pytest -k test_name   输出print 加 -s 报告输出:   安装pytest-html插件:pip install pytest-html   执行 pytest test.py --html=报告文件路径     举例:pytest test_01.py --html=result\report.html     这种result文件生成两个文件

pytest生成allure报告

假如想象 提交于 2020-02-26 11:59:29
使用pip安装pytest和allure-pytest   pip install pytest   pip install allure-pytest allure工具配置 allure是一个命令行工具,需要去github上下载最新版: https://github.com/allure-framework/allure2/releases 下载完成之后,解压到本地 把bin目录添加到环境变量Path下 执行用例 cd到test_***.py所在的目录文件,命令行执行 pytest --alluredir ./outputs/reports/allure_json 执行完成后,在工程目录下,report目录会生成一个allure_json目录包含测试报告的原始文件 打开html的报告需要启动allure服务 allure serve outputs/reports/allure_json 启动服务后,直接用默认浏览器打开报告 来源: https://www.cnblogs.com/lizhe860/p/12365795.html

动手实现web框架

你说的曾经没有我的故事 提交于 2020-02-26 06:36:44
后端开发中,我们经常使用web框架来实现各种应用,比如python中的flask,django等,go语言中的gin等。web框架提供了很多现成的工具,大大加快了开发速度。这次,我们将动手实现自己的一个web框架。 当我们在浏览器打开链接发起请求之后发生了什么? http请求会经过WSGI服务器转发给web框架比如flask,flask处理请求并返回响应。WSGI就相当于中间商,处理客户端和框架之间的信息交换。那么WSGI到底是个啥? WSGI WSGI全称服务器网关接口,你想想,针对每一种服务器都需要实现对应的处理接口是件很麻烦的事,WSGI规定了统一的应用接口实现,具体来说,WSGI规定了application应该实现一个可调用的对象(函数,类,方法或者带__call__的实例),这个对象应该接受两个位置参数: 环境变量(比如header信息,状态码等) 回调函数(WSGI服务器负责),用来发送http状态和header等 同时,该对象需要返回可迭代的响应文本。 WSGI实现 为了充分理解WSGI,我们定义一个application,参数为environ和回调函数。 def app(environ, start_response): response_body = b"Hello, World!" status = "200 OK" #

使用 pyhttptest 轻松测试 REST API

╄→гoц情女王★ 提交于 2020-02-26 01:45:07
现在,我们每个人都面临着 REST API,要么开发这样的服务,要么使用这样的服务。 此外,我们正处于微服务的时尚时代,我们将业务逻辑分割成独立于每个服务的小型独立服务。 这些服务大多遵循 RESTful 原则,并使用 JSON 格式进行通信,由于其简单性,JSON 格式成为最广泛使用的格式​。 pyhttptest 命令行工具,用于通过 RESTful api 进行 HTTP 测试。 这个工具通过简单的三个步骤自动化测试 安装 pip install pyhttptest 用文件中最简单且广泛使用的格式 JSON 描述针对 API 服务的 HTTP 请求测试用例 发送 HTTP GET 请求 json文件内容如下 { "name": "TEST: Get server status", "verb": "GET", "endpoint": "/get", "host": "https://httpbin.org", "headers": { "Accept-Language": "en-US" } } 发送 HTTP POST 请求 json文件内容如下 { "name": "TEST: Create an HTML bin", "verb": "POST", "endpoint": "post", "host": "https://httpbin.org", "payload"