我正在尝试为拥有论坛的网站设置一些测试。因此,许多这些事情需要连续完成,包括登录,创建和删除线程等。
目前我已经使用Selenium设计了测试用例,并使用webdriver导出到Python。
是否可以在所有测试之间仅使用一个webdriver实例,以便它们可以连续执行?我是python的新手(来自Java)所以我唯一的想法是创建一个实例化webdriver的基类,让所有测试子类化基础,并将webdriver传递给测试。 (我想在Java中做这个但是我强迫自己去学习Python)。
或者Selenium内置了另一个功能来完成此任务吗?
感谢您的时间。
答案 0 :(得分:0)
我设法通过拥有一个我的测试子类的基类来实现它。此基类将创建一个静态驱动程序,该驱动程序将由setUp()方法设置一次并返回到以下测试。
from selenium import webdriver
import unittest, time, re
class TestBase(unittest.TestCase):
driver = None
rand = str(random.uniform(1,10))
base_url = "desiredtestURLhere"
def setUp(self):
if (TestBase.driver==None):
TestBase.driver = webdriver.Firefox()
TestBase.driver.implicitly_wait(30)
return TestBase.driver
然后我跑了两个测试...
import unittest, time, re
from testbase import TestBase
class Login(TestBase):
def test_login(self):
driver = TestBase.driver
base_url = TestBase.base_url
driver.get(base_url)
# etc
测试#2连续运行......
import random
import unittest, time, re
from testbase import TestBase
class CreateThread(TestBase):
def test_create_thread(self):
driver = TestBase.driver
base_url = TestBase.base_url
rand = TestBase.rand
driver.get(base_url + "/forum.php")
# etc
我的testsuite.py我会跑...
import unittest, sys
# The following imports are my test cases
import login
import create_thread
def suite():
tsuite = unittest.TestSuite()
tsuite.addTest(unittest.makeSuite(login.Login))
tsuite.addTest(unittest.makeSuite(create_thread.CreateThread))
return tsuite
if __name__ == "__main__":
result = unittest.TextTestRunner(verbosity=2).run(suite())
sys.exit(not result.wasSuccessful())
这是我第一次接触Python,所以如果有任何明显的问题,我会很感激。