Vik*_*wal 9 testing automated-tests python-2.7 robotframework
如果说我要运行100个测试用例,那么测试用例没有24,38和99是相互依赖的.那么有可能在第99个测试用例被执行时你会发现先前执行的测试用例的状态(比如第24或第38个测试用例)?在我的情况下,第99个测试用例取决于第38和第24个测试用例的状态,因此,如果第24个或第38个测试用例失败,我希望第99个测试用例不会被执行,从而节省了很多时间 请尽可能地用一些例子来解释.提前致谢!
Bry*_*ley 22
一旦机器人开始运行,就无法根据某些条件跳过测试.我认为这是机器人的弱点之一,但设计师似乎并不喜欢跳过测试的概念.此外,没有内置的方法可以让一个测试依赖另一个测试.此功能的功能请求被拒绝.
但是,机器人是非常可扩展的,并且2.8.5版本中引入的功能使得编写关键字变得容易,如果另一个测试失败,该关键字将失败.此功能使库能够充当监听器.有了这个,库可以跟踪每个测试的通过/失败状态.有了这些知识,您可以创建一个在其他测试失败时立即失败的关键字.
基本思想是,在每个测试完成时缓存通过/失败状态(通过特殊_end_test方法).然后,使用此值来确定是否立即失败.
以下是如何使用此类关键字的示例:
*** Settings ***
| Library | /path/to/DependencyLibrary.py
*** Test Cases ***
| Example of a failing test
| | fail | this test has failed
| Example of a dependent test
| | [Setup] | Require test case | Example of a failing test
| | log | hello, world
Run Code Online (Sandbox Code Playgroud)
这是库定义:
from robot.libraries.BuiltIn import BuiltIn
class DependencyLibrary(object):
ROBOT_LISTENER_API_VERSION = 2
ROBOT_LIBRARY_SCOPE = "GLOBAL"
def __init__(self):
self.ROBOT_LIBRARY_LISTENER = self
self.test_status = {}
def require_test_case(self, name):
key = name.lower()
if (key not in self.test_status):
BuiltIn().fail("required test case can't be found: '%s'" % name)
if (self.test_status[key] != "PASS"):
BuiltIn().fail("required test case failed: '%s'" % name)
return True
def _end_test(self, name, attrs):
self.test_status[name.lower()] = attrs["status"]
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我使用了类似的方法:
Run Keyword if '${PREV TEST STATUS}'=='PASSED' myKeyword
Run Code Online (Sandbox Code Playgroud)
所以也许这对您也可以使用。
| 归档时间: |
|
| 查看次数: |
5984 次 |
| 最近记录: |