处理许多需要在运行它们的断言之前导航到特定位置的测试用例的最佳方法?例如,一个过程有5个步骤,而一个测试用例需要测试第5步的一部分,我该如何设置它?在此测试用例中调用前面步骤的测试用例方法,然后对测试步骤5的所有测试用例执行此操作?
类似地,如果一个测试用例通过许多页面深入到网站中,则应该为每个测试用例重新编写导航,还是只是调用已经执行该操作的某个测试?
关于这种情况的任何提示吗?
答案 0 :(得分:1)
如果您使用的是BDD,例如JBehave(不确定Cucumber是否具有相同的功能),而您使用的是Gherkin语法的Give,When,Then故事(功能)结构,则实际上可以使用“ GivenStories”功能就像前传测试用例一样,完全按照您的描述来设置您的特定测试用例。
但是,使用BDD简单地将多步骤场景引导到特定测试用例时,这没错,例如,第一个场景登录,第二个场景导航到特定页面,第三个场景执行您的实际测试。
但是,通过将其编写为单独的故事(功能),您可以将其用作JBehave中的“ GivenStories”,作为快捷方式,无需重复步骤即可到达所需的位置。
答案 1 :(得分:1)
处理许多需要在运行它们的断言之前导航到特定位置的测试用例的最佳方法?例如,一个过程有5个步骤,并且一个测试用例需要测试一个零件 步骤5中的设置方法?
我将创建一个Transporter类/模式,测试用例可以调用该类/模式以达到该状态。这将使导航代码可重用于其他测试,并且不会使测试太大/太复杂。您还可以在xUnit测试框架中使用setUp()
方法,如果需要将其用于其他测试,则将在每次测试之前调用public class Transporter {
public static void login() {
//App specific code to navigate to login screen and login to the application
}
public static void gotoCheckout() {
//App specific code to navigate to the checkout page
}
}
方法,并将导航器代码放在此处。
同样,如果一个测试用例深入到网站-通过许多 页-应该为每个测试用例重写导航,还是 只是打电话给已经做过的测试?
我会将代码提取到一个名为Transporter的帮助器类中,并进行测试以通过一个方法调用轻松导航至深层页面。
我在太平洋西北地区软件质量大会上的conference paper中写了有关此测试模式和其他测试设计模式的信息。在该paper中寻找运输者模式。
这是一个使用Transporter类的示例,您必须在其中登录并导航到结帐页面:
pg_dump -U postgres -a -t yourtable -d your_DB > test-dump.sql
现在,您的测试只需调用此Transporter类即可对其进行导航。