测试自动化
文章平均质量分 81
聂14昊51
努力+耐心
展开
-
pytest官方文档 6.2 中文翻译版(第二十章):编写钩子方法
20.1 钩子方法的验证和执行pytest从所有注册的插件中调用符合钩子规范的方法。我们看一个典型的钩子,作用是在所有的测试被收集之后调用:pytest_collection_modifyitems(session, config, items) 。当我们在我们的插件中调用了pytest_collection_modifyitems方法,那么在插件注册的时候,pytest就会验证你使用的参数名称是不是符合规范,如果不是,就放弃。我们看看可能的实现:def pytest_collection_modi翻译 2021-11-12 14:34:54 · 867 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第十九章):编写插件
在大多数项目中,引入本地的 conftest 插件或者使用pip安装插件都是可以的,包括第三方的项目。如果要使用一个插件而非自己写一个插件,可以参考上一章。一个插件包括一个或者多个钩子方法。下一章(编写钩子)解释了写一个钩子所需要的基本信息和详细信息。pytest通过以下插件中指定的钩子来实现 配置,收集,运行,报告等多个方面:内置的插件:从pytest内部的_pytest目录加载外部的插件:通过setuptools入口点发现的模块( setuptools entry points)19.4con翻译 2021-11-12 09:15:07 · 509 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第十八章):安装和使用插件
安装和使用插件这一章我们来看如何安装和使用第三方插件。如果你要写自己的插件,请看下一章。可以简单的使用pip安装一个第三方插件:pip install pytest-NAMEpip uninstall pytest-NAME如果安装了一个插件,pytest会自动寻找和集成这个插件,无需激活(activate)操作。下面是一些流行插件的说明:pytest-django:为django应用编写测试,使用pytest集成pytest-twisted: 为twisted应用编写测试, 从测试函数翻译 2021-05-31 15:46:11 · 494 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第十七章):经典XUnit风格的setup
经典XUnit风格的setup这一节描述在module/class/function上面,如何实现夹具的最经典也是最受欢迎的方法。注意:虽然说 setup/teardown 在之前的unittest和nose中都十分常见,我们也很熟悉这种写法,但是pytest的这种结合了依赖注入概念的夹具的思想是十分值得思考的,这种方式给大型的项目的测试和功能测试提供可更加模块化和更加可扩展的方式来管理测试状态。你可以在一个文件中混合这几种方式,但是继承自unittest.TestCase的类不能接收夹具参数。17.翻译 2021-05-25 15:43:03 · 217 阅读 · 3 评论 -
pytest官方文档 6.2 中文翻译版(第十五章):运行nose写的测试
译者注:由于我没有用过nose,所以这一章的翻译可能有些词不达意的地方,如有错误请指出pytest提供了对于nose写的测试的基本支持。16.1 用法在安装了pytest之后,在命令行中使用:python setup.py develop # 确定测试可以import我们的包pytest # 替换 'nosetests'这样你就可以使用pytest来运行nose风格的测试了。16.2 支持的nose风格在模块、类、方法级别的setup和teardownSkipTest异常和标记set翻译 2021-05-25 14:59:46 · 203 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第十五章):UNITTEST.TESTCASE 支持
pytest支持开箱即用的运行以 Python unittest 为基础的测试。这是为了在已有的在以unittest为基础的(unittest-based)测试上面进行扩充,使用pytest作为运行器。同时,这也可以让测试逐步的使用pytest提供的功能以获取个别更多的优势。使用pytest运行已存在的unittest风格的测试:pytest testspytest会自动的收集 unittest.TestCase 的子类和在test_.py 或是_test.py文件中的测试方法。几乎所有的unit翻译 2021-05-24 16:20:47 · 858 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第十四章):Cache:管理跨测试的状态
14.1 用法这个插件提供了两个命令行参数用于在测试失败的时候重新运行失败的用例:–lf, --last-failed 只重新运行失败的用例–ff, --failed-first 先重新运行失败的用例,然后运行其他的为了执行清理(通常情况下不需要),使用 --cache-clear 允许我们在测试运行之前删除所有的之前运行的cache。其他的插件可以在pytest执行的时候访问 config.cache 对象来获取一个json格式的值。注意:这个插件默认是开启的,如果你需要也可以关上:查看1翻译 2021-05-24 11:38:44 · 251 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第十三章):参数化的夹具和测试
参数化的夹具和测试pytest在多个级别上都可以做参数化:pytest.fixture() 允许用户参数化夹具函数@pytest.mark.parametrize 允许用户给测试方法或者类定义多组参数或者多个夹具pytest_generate_tests允许用户定义自定义的参数格式或者扩展13.1 @pytest.mark.parametrize: 参数化测试方法内置的 pytest.mark.parametrize 修饰器允许测试参数的参数化。这是一个测试给定的参数的运行结果是不是等于期望翻译 2021-05-24 09:38:23 · 452 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第十二章):skip 和 xfail处理那些无法成功的测试
你可以给那些不能在特定平台运行的测试或者那些本就期望失败的用例做个标记,这样ytest就可以处理这种用例并且提供一个测试运行的总结,同时保持测试集 green。skip的意思是你希望测试在某些情况下可以通过,否则,pytest应该整体跳过这个测试。比较通用的例子是在非windows的环境下跳过那些只能在windows下运行的用例或者在一些资源还没有准备好的时候跳过依赖这些资源的用例(例如一个数据库)。xfail表示由于一些原因我们期望测试失败。一个常见的例子是我们测试的功能还没有实现或者bug还没有被修翻译 2021-05-16 11:33:09 · 282 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第十一章):模块和测试文件中的文档测试(doctest)集成
译者注:doctest是python标准的模块,如果要了解相关的知识可以百度doctest默认情况下,所有符合 test*.txt 模式的测试文件会被python标准的 doctest 模块执行,你可以通过命令行参数来改变这种默认行为:pytest --doctest-glob="*.rst"–doctest-glob 可以在命令行中被多次指定。假设我们有这样一个文件:# content of test_example.txthello this is a doctest>>&翻译 2021-05-14 17:23:24 · 380 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第十章):警告捕捉
从3.1版本开始,pytest会在整个测试执行的过程中自动的捕捉警告:# content of test_show_warnings.pyimport warningsdef api_v1(): warnings.warn(UserWarning("api v1, should use functions from v2")) return 1def test_one(): assert api_v1() == 1运行pytest之后会得到下面的输出:$ pytest test_翻译 2021-05-14 09:51:35 · 499 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第九章):捕获 STDOUT/STDERR 输出
捕获 STDOUT/STDERR 输出译者注: stdout是标准输出设备 stderr 是标准错误输出设备9.1 默认的 stdout/stderr/stdin 捕捉行为在测试执行的过程中,很多输出被 stdout 和 stderr 捕获。当一个测试或者setup方法失败的时候,相关的输出经常会与错误跟踪( failure traceback)一起显示。(这个行为可以被命令行中 --show-capture 选项配置)。另外,如果从stdin中读取失败了,它将会被设置为“null”,因为在自动翻译 2021-05-10 11:29:10 · 731 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第八章):临时目录和文件
临时目录和文件tmp_path 夹具你可以使用 tmp_path夹具为每一个测试调用创建一个独立的临时目录,这个牡蛎的创建是基于 根临时目录的。译者注:根临时目录是所有临时目录的父目录,可以使用命令行指定,也有默认值tmp_path 是 pathlib.Path 的一个实例,下面是使用的例子:# content of test_tmp_path.pyCONTENT = "content"def test_create_file(tmp_path): d = tmp_path / "sub翻译 2021-05-09 03:27:23 · 339 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第七章):猴子补丁/模拟模块和环境
猴子补丁(MonkeyPatch)/模拟(Mock)模块和环境有些时候,测试需要调用那些依赖于全局设置的功能或者调用例如网络访问这种不易被测试的功能。猴子补丁 夹具可以帮助你安全的设置和删除一个属性,字典中的一项或环境变量,还可以改变 sys.path。猴子补丁(monkeypatch) 家具提供了下面一些有用的方法来安全的 模拟或者补丁测试中的一些功能:monkeypatch.setattr(obj, name, value, raising=True)monkeypatch.delattr(ob翻译 2021-05-09 02:11:01 · 484 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第六章):使用属性标记测试用例
使用属性标记测试用例使用 pytest.mark 可以帮助你在测试函数上简单的设置元数据。你可以在 API Reference 中找到完整的内置标记(marks)的列表。你也可以使用 pytest --markers 命令列出所有的内置和自定义的标记。这里是一些内置的标记:usefixtures 在测试函数或者测试类上使用夹具filterwarnings 过滤一个测试方法中的特定警告skip 总是跳过一个测试函数skipif 在一定的条件下跳过测试方法xfail 在一定条件下翻译 2021-05-06 20:42:38 · 345 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第五章):pytest夹具:明确的,模块化的,可扩展的
软件测试夹具是用于初始化的测试功能的。它们提供了一个固定的基线,以便测试能够可靠地执行并产生一致的,可重复的结果。初始化可能会设置服务、状态或其他运行环境。测试函数可以通过参数访问测试夹具,通常在测试函数的定义中对于测试函数使用的每一个夹具都有定义。pytest 夹具对经典的xUnit风格的setup/teardown函数进行了显著的改进夹具有一个确定的名字,在测试函数,模块,类,甚至整个项目都可以声明使用夹具以一种模块化的方式实现,因为每个夹具名称都会代表一个函数,而夹具本身也可以使用其他夹具。夹翻译 2021-04-30 16:11:47 · 1000 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第四章):测试中断言的编写和报告
测试中断言的编写和报告4.1 使用assert声明来断言pytest允许你在测试中使用标准的assert关键字来验证期望值和实际结果。例如你可以编写下面的代码:# test_assert1.pydef f(): return 3 def test_function(): assert f() == 4这段代码用于验证你的函数返回了一个特定的值。如果断言失败了你能够看到函数的实际返回值。$ pytest test_assert1.py==========================翻译 2021-04-15 11:40:02 · 523 阅读 · 0 评论 -
python通过ctypes调用C++ DLL过程中返回值的指定和结构体数组的使用
在做自动化测试的过程中,我需要使用python调用C++的SDK,完成接口测试的工作。由于团队只提供了C++的SDK源码,所以我需要做下面几件事:封装C++的接口,进行接口的导出打包为DLL,动态链接库使用ctypes库,调用dll,完成测试网上关于python通过ctypes调用C++动态链接库的教程非常多,我就不再写了,这里就写一下我在使用过程中遇到的两个问题:接口返回为应字符串,C++代码中声明为char *,如何在python中获取字符串的返回值?参数中有结构体,返回值是结构体,返原创 2021-04-13 10:04:40 · 4430 阅读 · 2 评论 -
pytest官方文档 6.2 中文翻译版(第三章):在现有的测试套件中使用pytest
在现有的测试套件中使用pytest译者注:这节虽然翻译是这个样子的,但事实上这节是说如何在运行测试程序,安装依赖的时候使用编辑模式(开发者模式)Pytest可以与现有的大多数测试框架一起使用,但它运行起来与nose或Python自带的unittest框架有一些一些区别。在阅读本章节之前,您需要先阅读第一章节 安装pytest。3.1 使用pytest运行一个已经存在的测试套件假设你计划向一个已存在的仓库贡献一些代码。在使用版本控制工具的一些功能拉取代码到本地之后,设置一个虚拟的运行环境(virtu翻译 2021-03-29 10:32:33 · 356 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第二章):使用和调用
使用和调用2.1 通过python -m pytest调用pytest你可以在命令行中通过python解释起调用测试:python -m pytest [...]这种方法与在命令行中使用 pytest […] 几乎是等效的,而使用python调用比直接使用pytest多做的事情是程序将把当前目录添加至 sys.path.2.2 可能的退出代码运行pytest有六种可能的退出代码:退出代码 0:所有测试都被收集且成功通过退出代码 1:所有测试都被收集但只有部分测试通过退出代码 2:测试翻译 2021-03-26 15:21:51 · 1078 阅读 · 0 评论 -
pytest官方文档 6.2 中文翻译版(第一章):安装和入门指南
安装和入门指南Python版本: Python 3.6, 3.7, 3.8, 3.9, PyPy3平台: Linux and WindowsPyPI 包名: pytestDocumentation as PDF: download latestpytest 是一个测试框架,可以让你轻而易举的构建简单的和可扩展的测试。 测试没有过多的样板代码,一切都是简单易读的。可以在几分钟就写好一个针对你的应用程序或者库的小型单元测试或复杂功能测试。1.1 安装 pytest在你的命令行中运行下面的命令pi翻译 2021-03-19 15:24:07 · 2850 阅读 · 0 评论 -
Docker速查笔记
准备查看目前centos版本rpm -q centos-release打开官方文档https://docs.docker.com/engine/install/centos/#install-using-the-repository安装根据官方文档安装docker 官方文档修改镜像需要登录阿里云开发者平台,具体操作看这一篇博客容器镜像服务地址...原创 2020-11-02 14:05:58 · 339 阅读 · 0 评论