Python unittest-如何选择执行测试的url?

Python unittest-如何选择执行测试的url?,python,unit-testing,selenium,webdriver,Python,Unit Testing,Selenium,Webdriver,我是python的初学者,目前正在使用unittest编写一套SeleniumWebDriver测试用例;我在这里也找到了很多有用的答案,但现在是问我第一个问题的时候了,我一直在努力解决这个问题,无法找到合适的答案,因此非常感谢您的帮助: 简而言之,我有一套多个测试用例,在每种情况下,第一步总是“.get('someurl')”;我已经为单个环境编写了这些测试用例,但是我希望能够选择执行所有测试的URL。在下面的示例中,我使用特定的环境调用了“access_url”方法,但我需要同时对所有场景执

我是python的初学者,目前正在使用unittest编写一套SeleniumWebDriver测试用例;我在这里也找到了很多有用的答案,但现在是问我第一个问题的时候了,我一直在努力解决这个问题,无法找到合适的答案,因此非常感谢您的帮助:

简而言之,我有一套多个测试用例,在每种情况下,第一步总是“.get('someurl')”;我已经为单个环境编写了这些测试用例,但是我希望能够选择执行所有测试的URL。在下面的示例中,我使用特定的环境调用了“access_url”方法,但我需要同时对所有场景执行此操作,是否可以从执行.py文件(例如“python example.py”)的位置执行此操作?或者在选择要运行的套件时将其传递到.run()方法中

import HTMLTestRunner
from selenium import webdriver
import unittest
这是一个自定义类,用于创建“access\u 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()

最后,为了执行脚本,我在CMD中键入以下行:“python example_file.py


如上所述,我所要做的就是能够以某种方式将URL一次性传递给所有调用“access_URL()”方法的测试用例。谢谢

您可以在单独的配置文件中维护环境属性

config.py

你们班

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

您还可以在运行python main.py时传递环境名称

main.py


这真是太优雅了!我一直在研究各种复杂的解决方案,老实说,我从来没有想过在.run()方法之前将其放入变量并进行更改。我仍然在思考所有的编程概念,所以你不仅帮助了我,而且我也学到了一些东西。非常感谢你!
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):
        [...]
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)
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)