所以我不知道这是否是关于口味的更多问题,但我想知道以下内容:
我正在编写一个机器人框架库,该库将提供一些自定义关键字。更确切地说,它打开一个UDP连接,通过该连接可以写和读数据。
回读的数据将与预期值进行比较。
我看到两种实现库的基本方法:
创建以下关键字:
def read_and_expect(self, expectedValue):
...
if(readValue != expectedValue):
raise AssertionError("error")
以及相应的机器人文件如下所示:
*** Test Cases ***
| Testcase1
| | read_and_expect | ${expectedValue}
或从关键字返回数据
def read(self):
...
return readValue
并在机械手文件中进行比较。因此,机器人文件将如下所示
*** Test Cases ***
| Testcase1
| | ${result}= | read
| | Should Be Equal | ${result} | expectedValue
这些解决方案中的一种比另一种更好吗,或者实现它只是您自己的口味?
我的意见是:第二个在体系结构方面更好(一个人可以轻松切换接口,而不必关心比较)。
恕我直言,当检查/声明是测试的一部分时,始终最好将它们保留在Robot中。因此,案例是独立的,阅读案例可以告诉用户所做的一切以及如何进行。有时-当它们过于复杂并且需要复杂的构造和逻辑时,他们可以使用python代码;我仍然尝试将它们放在有意义的名称后面-例如“验证数据包头是否在期望之内” (不是真实的示例:))。
然而,大多数时候,即使有一些牺牲(例如,文本行较长的斑点),我还是会尝试将它们挤压在机器人中;这对不具备python知识的用户也很有帮助-他们正在学习Robot语法,现在无需在上面使用python来分散注意力。
此外,内置函数中的断言有一些小优点-日志记录可能会有所帮助(例如在不匹配时打印值),自动类型转换等。>