我是python的初学者,我目前正在使用unittest用硒Webdriver编写一套测试用例;我在这里也找到了很多有用的答案,但是现在是时候问我的第一个问题了,我为此付出了很多努力,找不到合适的答案,因此,我们将不胜感激:
简而言之,我有一套包含多个测试用例的案例,在每种情况下,第一步始终是“ .get('Some URL')”;我已经为单个环境编写了这些测试用例,但是我希望能够选择将在其上执行所有测试的URL。在下面的示例中,我在特定环境下调用了“ access_url”方法,但是我需要针对所有场景一次执行此操作,是否有可能在我执行.py文件的位置执行此操作(例如“ python示例”。 py”)?还是在选择要运行的套件时在.run()方法中传递它?
import HTMLTestRunner
from selenium import webdriver
import unittest
这是用于创建“ access_url”方法的自定义类
def MyClass(object):
def __init__(self, driver):
self.driver = driver
def access_url(self, URL):
if URL == 'environment 1':
self.driver.get('https://www.google.com/')
elif URL == 'environment 2':
self.driver.get('https://example.com/')
在我用来编写测试用例的类中,第一步始终是“访问URL”
class TestScenario01(unittest.TestCase):
def setUp(self):
[...]
def test_01_access(self):
MyClass(self.driver).access_url(URL='environment 2')
def test_02(self):
[...]
def test_03(self):
[...]
为了运行测试,我将它们全部放在一个套件中,并在它们上使用.run()
tc_scenario01 = unittest.TestLoader().loadTestsFromTestCase(TestScenario01)
test_suite = unittest.TestSuite([tc_scenario01])
HTMLReporterCustom.HTMLTestRunner().run(test_suite)
最后,为了执行脚本,我在CMD中键入以下行:'python example_file.py
如上所述,我要做的就是能够以某种方式将URL传递给所有调用“ access_url()”方法的测试用例。谢谢!
答案 0 :(得分:0)
您可以在单独的配置文件中维护环境属性。
config.py
DEFAULT_ENVIRONMENT='environment1'
URL = {
'environment1': 'https://www.google.com/',
'environment2': 'https://example.com/'
}
您的班级
from package import config
def MyClass(object):
def __init__(self, driver):
self.driver = driver
def access_url(self):
self.driver.get(config.URL[config.DEFAULT_ENVIRONMENT])
然后测试班将按预期进行,
class TestScenario01(unittest.TestCase):
def setUp(self):
[...]
def test_01_access(self):
MyClass(self.driver).access_url()
def test_02(self):
[...]
def test_03(self):
[...]
在运行测试时,您可以更改
main.py
from package import config
config.DEFAULT_ENVIRONMENT = 'enviroment2'
tc_scenario01 = unittest.TestLoader().loadTestsFromTestCase(TestScenario01)
test_suite = unittest.TestSuite([tc_scenario01])
HTMLReporterCustom.HTMLTestRunner().run(test_suite)
您还可以在运行python main.py时传递环境名称。
main.py
if __name__ == '__main__':
config.DEFAULT_ENVIRONMENT = sys.argv[1] if len(sys.argv) > 2 else 'dev'
tc_scenario01 = unittest.TestLoader().loadTestsFromTestCase(TestScenario01)
test_suite = unittest.TestSuite([tc_scenario01])
HTMLReporterCustom.HTMLTestRunner().run(test_suite)