我有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. 配置PhantomjsDriver運行硒測試用例
- 6. 運行硒IDE出口測試用例
- 7. 運行硒測試
- 8. 運行硒服務器
- 9. 運行與硒的DataProvider多個測試
- 10. 如何通過命令行運行測試套件的一些測試用例?
- 11. 針對多種瀏覽器運行硒webdriver測試用例
- 12. 運行硒2個測試針對某一硒實例
- 13. 並行運行硒測試
- 14. 如何使用硒通過cron運行rspec測試
- 15. 使用htmlunit在無頭服務器上運行硒測試
- 16. 使用Python針對服務器場運行硒測試
- 17. 如何使用maven運行硒測試?
- 18. 如何通過另一個測試才能運行測試類?
- 19. 如何在一個文件中運行多個測試用例
- 20. 並行運行硒測試,第一個並行任務在完成後關閉硒服務器
- 21. 如何在teamcity中運行e2e測試,如何在後臺運行服務器並運行e2e
- 22. 在同一臺服務器上運行多個Microsoft主數據服務實例
- 23. 運行多個服務器
- 24. 如何一起運行硒瀏覽器的多個實例
- 25. 如何檢查硒服務器是否在後臺運行
- 26. 在多臺服務器上通過powershell運行bat文件
- 27. 如何在同一臺服務器上運行TeamCity的多個實例?
- 28. 如何讓多個keepalived實例在同一臺服務器上運行?
- 29. 運行測試NG硒測試通過SSH
- 30. 如何運行多個scrapyd服務器?
你正在使用什麼單元測試框架? Junit或TestNG,你目前如何執行你的個案? –
感謝您的回覆。我正在使用Junit框架。目前,我使用TestSuite類來運行測試,但每個測試套件都作爲單獨的服務器運行。 – Rank