Ric*_*ard 5 python testing automated-tests robotframework
问题摘要: 我目前正在尝试将现有测试从纯 python 迁移到机器人框架,以便从不错的报告功能中受益。这些系统测试必须使用由许多参数组成的多个参数集重新运行。这就是为什么我已经有了一个 python 生成器,可以生成包含所有可能参数配置的字典以及为每个参数生成可读描述的方法。
我想实现:
数据驱动的方法: 我使用了生成器,我必须按照以下格式编写数据驱动的测试文件,这几乎给了我想要的输出。我对这种方法的问题是,我想用作测试用例名称的描述很长,而且要弄乱的参数远远超过三个,其中大多数有两个以上的状态。这使得我以这种方式创建的 .robot 文件不可读。我不喜欢输出的一件事是我没有看到用于测试用例的参数的名称,因此测试标题确实必须包含有关所有参数的所有信息。除此之外,我认为如果没有更好的解决方案,尽管中间步骤不可读,这就是我将采用的方法。
*** Settings ***
Test Template Check Result With Args
*** Keywords ***
Check Result With Args
[Arguments] ${par1}
... ${par2}
... ${par3}
Set par par1 ${par1}
Set par par2 ${par2}
Set par par3 ${par3}
Evaluation
Check result
*** Test Cases *** par1 par2 par3
description000 0 0 0
description001 0 0 1
description010 0 1 0
description011 0 1 1
description100 1 0 0
description101 1 0 1
description110 1 1 0
description111 1 1 1
Run Code Online (Sandbox Code Playgroud)
以下关键字驱动方法的代码更符合我的口味,但输出看起来不太好。使用以下代码,报告中只表示一个测试用例,然后多次调用一个关键字。更多的缺点:测试设置和拆卸都只调用一次。此外,describe parameters 关键字记录了有关测试用例的信息,但它不是立即可见的,而是隐藏在关键字调用中。使用字典作为参数似乎很不错,因为这样我可以在每次 for 循环迭代的报告中看到值旁边的字典键。
*** Keywords ***
Set Parameters And Check Result
[Arguments] ${parameter dictionary}
Describe Parameters ${parameter dictionary}
Set Parameters ${parameter dictionary}
Evaluation
Check result
*** Test Cases ***
Check Result For All Possible Configurations
${all configs} = Yield All Possible Configurations
:FOR ${configuration} IN @{all configs}
\ Set Parameters And Check Result ${configuration}
Run Code Online (Sandbox Code Playgroud)
我还尝试在测试用例中使用 [Template],但该解决方案只是结合了我在此处展示的两种方法的缺点。我还没有尝试过的一件事是提供整个测试用例参数并从 python 运行它。我觉得应该有一个优雅的解决方案,以某种方式将测试模板与 for 循环和嵌入参数结合使用,但我还没有弄清楚。提前感谢您的帮助!
您可以利用robotsframework-datadriver库来做您提到的事情,即数据驱动和基于关键字的事情。
DataDriver 是使用 Robot Framework 创建数据驱动测试的另一种方法。DataDriver 根据测试模板和 csv 或 Excel 文件的数据内容创建多个测试用例。所有创建的测试共享相同的测试序列(关键字),但测试数据有所不同。
DataDriver 作为库使用/导入,但不提供可在测试中使用的关键字。DataDriver 使用监听器接口版本 3 来操作测试用例,并根据包含数据驱动测试数据的数据文件创建新的测试用例。这些数据文件可能是 .csv 、 .xls 或 .xlsx 文件。