python模块允许通过配置文件参数化所有测试序列

wooqi的Python项目详细描述


吴起测试序列器

pypi version fury.iopypi license构建状态

简介

wooqi是名为 pytest。它允许以非常特殊的方式对测试进行编码。这是一个有用的工具 管理大型测试数据库,因为它简化了测试的创建、维护和 执行。

吴起修改了pytest的标准用法,引入了新的力学,以便应用精确的 测试方法可由以下要点描述:

  • 有一个测试步骤数据库。
  • 有一个测试序列数据库,其中每个序列都是 由从测试步骤数据库中选择的一个或多个测试步骤组成。
  • 有一些常用工具(自定义python类或函数) 以及固定装置,这些装置都可用于任何测试步骤。
  • 用户可以使用单个命令行执行单个测试序列。
  • 所有测试序列的报告和日志都保存在一个公共的报告数据库中。

例如,创建日志、测试参数化、报表读取和测试调度。 用吴起简化的东西。此外,该工具的通用方面允许 只要你能尊重它的方法,就可以将它用于任何类型的测试目标。

最后,需要注意的是,wooqi不包含任何测试本身。只是一个 执行测试的工具,我们称之为Wooqi项目。这样,你就可以 在您的机器上有几个"Wooqi项目",每个项目都有自己的特定功能,而 只使用一个工具(wooqi插件)在任何项目中执行任何测试。

基于上述原因,wooqi可以被视为一个独立的工具,而不是一个简单的 Pytest插件。

安装

您可以将wooqi作为pip包安装。

pip install wooqi --user

或者您可以克隆存储库,并手动构建和安装包:

python setup.py bdist
pip install dist/<package_name>

其中,<;package\u name>;是Wooqi软件包的名称及其版本

您的Wooqi项目

吴起只是一个测试序列器,并不包含一些测试本身。这意味着你必须创造 您自己的项目包含您自己的测试,将由Wooqi阅读和执行。

创建新项目

要自动初始化新的wooqi项目,请使用以下命令行:

wooqi --init-project MY_PROJECT

用项目目录的路径替换我的项目(可以是相对的或绝对的)。这个 为项目创建必要的子目录和文件。大部分文件都是空的,因为 它们只是一些例子。

创建的项目的树状视图只是一个建议,并不是Wooqi必须工作的。 您可以根据自己的喜好定制您的Wooqi项目,只要您遵守以下规则(请 阅读下一节以完全理解这些规则:

  1. 夹具必须导入到项目根目录下的conftest.py中。
  2. em>setup.cfg必须位于 项目的根源。(请参见高级功能部分)
  3. 测试步骤、操作和顺序必须遵守其专用部分中给出的规则。
  4. < > >

    编写测试

    编写测试步骤

    测试步骤只是一个python函数,其中包含一个断言。以下规则必须是 观察:

    • 一个测试步骤由一个函数表示。
    • 测试步骤可以写入任何目录中的文件中(默认目录为测试步骤)。
    • 此文件的名称必须以"test"开头。
    • 测试步骤名称必须以"测试"开头,测试步骤中的断言必须遵守指南 pytest模块的
    • 测试步骤的参数必须选自现有的fixtures和特殊的 下面给出的参数。 有关这些特殊参数的详细信息,请参见 本文件。
        < >
      • Uut2
      • 测试信息
    • 测试步骤可以使用任何其他文件中的任何python函数,只要它是 进口。它是标准的蟒蛇!

    编写操作

    操作几乎与测试步骤相同,只是它不一定有断言。 必须遵守以下规则:

    • 一个动作由一个函数表示。
    • 可以在任何目录中的文件中写入操作(默认目录为操作步骤)。
    • 此文件的名称必须以"操作"开头。
    • 动作名称必须以"动作"开头。
    • 操作可以包含断言,如测试步骤,但这不是必需的。
    • 操作的参数遵循与测试步骤相同的规则。
    • 一个操作可以使用任何其他文件中的任何python函数,只要它被导入。 它是标准的蟒蛇!

    编写测试序列
    基础知识

    测试在配置文件(.ini中)中描述。此文件可以位于任何目录中(默认为 序列)。因此,此文件包含几个具有某些属性的部分,如:

    [my_section]attr1=value1attr2=value2

    这些配置文件中可能有一个初始部分:

    • [测试信息]它包含有关序列本身的信息。 此部分中可以包含以下属性:
      • 循环测试:用于在序列中生成循环。 请参阅专用章节
      • 循环项:用于在序列中生成循环。 请参阅专用章节

    其他部分是指测试步骤或操作。任何步骤或动作都可以从 只需将目录名作为节名进行测试。

    示例:[测试电池电量]。本节的一些属性用于在测试中组织此步骤, 另一些则以阶跃函数作为参数。步骤顺序由 .ini中的定义顺序

    以下是可以在步骤/操作部分中写入的属性列表:

    • 后置失败待定
    • 重新运行待定
    • UUTTBC
    • uut2tbc
    • […待定…]
    在一个序列中多次调用同一步骤

    如果需要多次调用同一测试步骤,则有一种特殊语法。必须添加"x" 在测试名称的末尾,将数字"x"从"0"增加如下:

    [test_foo_0] ; Start with 0uut=dummy1[test_foo_1] ; Continue with 1uut=dummy2[test_foo_X] ; and so on...uut=dummy3
    在TE中循环ST序列

    您必须在[测试信息]部分中添加两个属性:

    • 循环测试=a b其中a和b是循环的第一步和最后一步的名称。
    • 循环=k其中k是循环的迭代次数。

    在下面的示例中,序列"test"将重复2次:

    [test_info]loop_tests=test_b|test_dloop_iter=2[test_a][test_b][test_c][test_d][test_e]

    运行测试序列

    要启动测试,请移动到项目存储库的根目录并运行以下命令:

    wooqi --seq-config TEST_SEQUENCE_FILE --sn SAMPLE_NAME [-s] [-k TEST_NAME] [--lf]
    

    其中:

    • [--seq config test_sequence_file](必需)测试序列的.ini文件的相对路径。
    • [--sn sample_name](必需)样本名称。用于命名日志。
    • [-s]在控制台中显示日志和打印输出。
    • [-k test_name]仅执行指定的测试(名称可能不完整)。
    • [-lf]仅执行上次失败的测试。

    示例:

    wooqi --seq-config test_sequences/folder1/seq1.ini --sn mySample
    

    自第一次失败后重新运行测试序列

    要在第一次测试失败后重新运行序列,请使用相同的命令并添加--ff选项 (-首先失败):

    wooqi --seq-config TEST_SEQUENCE_FILE --sn SAMPLE_NAME --ff
    

    如果序列在循环中失败,则循环的所有测试都将重新运行。

    您可以定义以前需要的测试或操作。如果测试失败有要求,则 自测试定义到.ini文件后重新运行序列。

    pip install wooqi --user
    
    0

    高级功能

    编写工具

    步骤可能需要对其中几个步骤有用的外部函数。我们称之为 "工具"可以用任何python文件编写。然后它们可以导入到python文件中 包含步骤和/或装置,并在步骤中调用。唯一必须遵守的规则 混淆wooqi是为了避免用以"test"或"action"开头的名称命名这些函数, 因为这些名称仅用于步骤和操作。

    配置Wooqi

    复制项目目录根目录下的文件wooqi_conf_template.cfg wooqi_conf.cfg

    此文件将由wooqi读取,并允许您自定义其中的几个功能。所有的 本模板说明了可用参数及其使用。

    编写自己的装置

    fixtures的概念是py.test提供的一个很好的特性。为了得到更多的信息, 请阅读官方的文档。 与wooqi的唯一区别是,您必须导入wooqi中包含的自定义pytest模块:

    pip install wooqi --user
    
    1

    您可以将自己的装置添加到项目的任何文件中。那么,你的每一步都可以 调用fixture作为其参数之一。这些固定装置将在 按顺序执行步骤。

    编写自己的Wooqi挂钩

    wooqi提供了所有pytest钩子,允许在 处决吴起。欲了解更多信息,请阅读官方网站 文档

    您可以在Wooqi项目中添加自己的自定义挂钩。

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


热门话题
将文本文件读取到java对象数组   不支持java PageNotFound请求方法“GET”   java JDBC未选择任何数据库   java正在获取ssl。SSLHandshakeException在使用带有标头的REST客户端时发生,但在使用PostMan时可以正常工作   java测试与junit 5的接口   多线程Java Publisher服务器聊天程序   java编译错误已尝试修复,但没有成功   在TIBCO上安装java Https证书   java如何解析一个困难的问题。txt文件?   java如何使用ApachePOI3.6和ApachePOIOXML3读取pptx文件的内容。15罐?   java使用Gradle运行特定于Android的检测测试   人工智能回溯Java   用java制作螺旋桨动画   spring hibernate查询中的java日期   java读取HDFS小型分区?