我有5个测试套件(即多个类),每个套件都有自己单独的server.start()和stop()以及selenium.start()并停止()。现在,我想要的是:我希望我的脚本在不停止服务器的情况下运行所有测试套件。换句话说,如果你想说,我需要在一个会话中运行多个测试套件。任何人都可以帮助我如何做到这一点?如何通过运行一台硒服务器运行多个测试用例
回答
我真的很想知道你正在使用什么样的测试框架,像Varun问的。如果你使用的是Python,你可以看看这个例子,它以_test.py结尾运行任何测试文件。
#!/usr/bin/python27
import os
import sys
failure = False
f = open('test.log', 'w')
xmlHeader = """
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> """
f.write(xmlHeader)
for dirname, dirnames, filenames in os.walk('.'):
for filename in filenames:
if filename.endswith("_test.py"):
filename = "python27 %s/%s" % (dirname, filename)
testLine = "Running test: " + filename
seperator = "---------------------------------------------------------"
print seperator
print testLine
print seperator
f.write("<testsuite name=\"" +testLine + "\">")
out = os.popen(filename)
outputString = out.read()
print outputString
f.write("""<system-out><![CDATA[""" + outputString + "]]></system-out>")
retval = out.close()
if retval:
failure = True
failString = "FAILURE - test file: " + filename
print failString
f.write("<failure desc=\"" + failString +"\"/>")
f.write("</testsuite>")
f.write("</html>")
if failure:
sys.exit(1)
您可能还需要寻找到设立类似詹金斯http://jenkins-ci.org/一些东西,可以运行不同的测试套件。
请尝试以下操作。我正在讲这个Junit。
- 创建一个基类,您可以使用批注@ BeforeClass,@ AfterClass,@ Before,@ After定义4个方法。
- 在Before/AfterClass中添加您的服务器启动和停止。在BeforeClass中检查一次,如果服务器已经运行或没有运行。如果没有,那么只能开始。
- 在@Before和@After中添加硒启动和停止命令。
- 将此BaseClass扩展到所有Test类中。尝试运行套件。
在出现任何问题时回复。 它更好地使用TestNg,因为它可以更灵活地处理和执行测试用例。
您可以从您的套房 我使用硒没有任何JUnit和测试套件 删除JUnit和测试套件扶养添加类包含的主要功能,并添加函数调用您的套房 的所有类定义硒对象这样selenium = new DefaultSelenium(serverHost,serverPort,browserStartCommand,browserURL); selenium.start(); 执行全部测试后 add selenium.stop();
@ Abhinav-我不认为它是不使用测试框架的好主意。原因是你需要给你写的每个测试方法添加一个调用。对于小号码。这很好,但实际上测试案例总是会很大。并为每个电话写一个不是一个好方法。你也需要明确地写出这种方法的报告框架。 –
好吧我认为你的方法是不同的我正在执行从xml文件使用java反射API我的测试用例,我设计基于硒的自动化套件和使用反射硒调用 –
要以编程方式执行此操作,您需要创建一个静态变量来保存SeleniumServer实例。
public class SeleniumServerManager {
private static SeleniumServer seleniumServer;
public static void attemptToStartSeleniumServer() throws Exception {
if (null == seleniumServer) {
seleniumServer = new SeleniumServer();
seleniumServer.start();
}
}
}
你必须在所有的测试套件来引用此,以确保服务器启动
public class StackOverflowTest extends TestCase {
private Selenium selenium;
@Override
public void setUp() {
SeleniumServerManager.attemptToStartSeleniumServer();
this.selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://www.stackoverflow.com");
this.selenium.start();
}
public void testStackoverflow() {
this.selenium.open("/");
}
}
如果你不喜欢#attemptToStartSeleniumServer重复呼叫,并使用Ant或者Maven在你的项目中,看看可以管理你的服务器实例的可用Ant任务/ Maven插件。
添加到讨论中,您可以将Testng框架用于自动化测试。在所有测试完成后,你可以有一个Class将设置和拆除硒实例。
class something{
public static Selenium selenium;
public static Selenium globalSeleniumInstance
@BeforeSuite(alwaysRun = true)
public void init(){
selenium = new DefaultSelenium()
globalSeleniumInstance = selenium;
selenium.start();
}
@AfterSuite(alwaysRun = true)
public void destroy() throws Exception {
selenium.stop();
}
Now for you test class you can
@Test(groups = {"myWebsite"}, alwaysRun = true)
public class MyWebsite {
private Selenium selenium;
@BeforeClass(alwaysRun = true)
public void init() {
selenium = ResourceManager.globalSeleniumInstance;
selenium.windowFocus();
selenium.windowMaximize();
}
@Test(alwaysRun = true)
public void lookForRecentPosts() throws Exception {
do something with selenium here
}
}
so in you testng xml file you can add the classes like these
<suite thread-count="1" verbose="1" name="Test Automation Suite"
annotations="JDK" parallel="false">
<test name="Tests" junit="false">
classes>
<class name="com.test.managerclass" />
</classes>
</test>
</suite>
- 1. 无法在后台运行服务器运行硒测试
- 2. 在另一台服务器上运行Jenkins的硒测试
- 3. 在Hudson通过JUnit运行硒测试
- 4. 尝试与硒电网运行在多个浏览器并行测试用例
- 5. 运行硒测试
- 6. 运行与硒的DataProvider多个测试
- 7. 如何通过命令行运行测试套件的一些测试用例?
- 8. 针对多种浏览器运行硒webdriver测试用例
- 9. 如何使用硒通过cron运行rspec测试
- 10. 使用htmlunit在无头服务器上运行硒测试
- 11. 如何使用maven运行硒测试?
- 12. 如何通过另一个测试才能运行测试类?
- 13. 如何在一个文件中运行多个测试用例
- 14. 在同一台服务器上运行多个Microsoft主数据服务实例
- 15. 运行多个服务器
- 16. 在多台服务器上通过powershell运行bat文件
- 17. 如何在同一台服务器上运行TeamCity的多个实例?
- 18. 如何检查硒服务器是否在后台运行
- 19. 运行测试NG硒测试通过SSH
- 20. 如何在MF测试服务器(远程服务器)上运行“PushNotification”示例?
- 21. 测试SMTP服务器正在通过C#运行
- 22. 硒测试不运行
- 23. 无法运行硒测试
- 24. 运行JUnit测试硒
- 25. 在Jenkins运行硒测试
- 26. 从aspx运行硒测试
- 27. 在一台专用服务器上运行多个nginx ubuntu
- 28. testng多次运行硒测试
- 29. 硒:尝试使用硒网格在多个浏览器上运行测试
- 30. 如何在JSP中通过Servlet同时运行多个JUNIT测试用例
你正在使用什么单元测试框架? Junit或TestNG,你目前如何执行你的个案? –
感谢您的回复。我正在使用Junit框架。目前,我使用TestSuite类来运行测试,但每个测试套件都作为单独的服务器运行。 – Rank