最初,我具有def setup()以及用于从另一个文件调用特定Web浏览器的选项,这些文件包含有关如何设置Web浏览器的所有信息。标记出未使用的浏览器。
def setUp(self):
# Choose the Web Browser to test with
operabrowser(self)
# chromebrowser(self)
...
def test_one()
...
def test_two()
...
我试图每次都不再编辑测试文件,我希望设置一个控制台输入来调用浏览器,并且我已经添加了def setup()。
browser_choice = input ( """Choose your browser
Opera, [Firefox], Chrome or Safari
> """ ).lower ()
if browser_choice == 'opera':
operabrowser()
else chromebrowser()
这适用于单个单元测试,但是如果文件中有多个测试,则每次都会要求选择浏览器。
对于要在测试文件中运行的所有测试,如何才能只询问一次此选项?我尝试了其他几种方法来解决所有这些不成功的问题。
答案 0 :(得分:0)
测试应定义为类方法,在您的代码中,它们似乎是独立的函数,与包含setUp()
方法的类没有直接关系。您只需要这样修改代码:
import unittest
class YouTests(unittest.TestCase):
def setUp(self):
q = 'Choose your browser Opera, [Firefox], Chrome or Safari >'
browser_choice = input (q).lower ()
if browser_choice == 'opera':
operabrowser()
else:
chromebrowser()
def test_one(self):
pass
def test_two(self):
pass
...
如果您有多个继承自unittest.TestCase
的类,并且所有类都应使用相同的浏览器,则最好将浏览器选择插入您的global
范围内。例如:
browser_object = None
...
def operabrowser():
global browser_object
# Init opera object here
def chromebrowser():
global browser_object
# Init chrome object here
...
# Your tests using the browser_object
...
if __name__ == '__main__':
q = 'Choose your browser Opera, [Firefox], Chrome or Safari >'
browser_choice = input (q).lower ()
if browser_choice == 'opera':
operabrowser()
elif browser_choice == 'firefox':
...
else:
chromebrowser()
unittest.main()