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

时间:2018-11-11 20:41:05

标签: python unit-testing selenium webdriver

我是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()”方法的测试用例。谢谢!

1 个答案:

答案 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)