Python+Unittest做自动化测试时,碰到了一个坑,在找到了解决方法后记录一下。
修改前的代码:
# utest.py
from selenium import webdriver
# from selenium.webdriver.support.select import Select
from time import sleep
import unittest
import parameterized
import pandas
driver = None
data = pandas.read_excel("G:/test/pandasTest测试用例.xlsx")
datalist = data.values.tolist()
class WebOpen(unittest.TestCase):
@classmethod
def setUpClass(cls):
global driver
driver = webdriver.Chrome()
@classmethod
def tearDownClass(cls):
driver.quit()
sleep(1)
def setUp(self):
u"""打开网页"""
driver.get('https://www.baidu.com')
#用parameterized进行了参数化
@parameterized.parameterized.expand(datalist) #重点在这!!!!!
def test1OpenWeb(self, key, word):
driver.find_element_by_name("wd").send_keys(word)
sleep(1)
driver.find_element_by_id("su").click()
sleep(1)
title = driver.title
print("当前页面标题:%s" % (title))
assert word in title, "结果:"+title
if __name__ == '__main__':
unittest.main(verbosity=2)
# runTest.py
import unittest
from utest import WebOpen #导入被测试类
suite = unittest.TestSuite()
suite.addTest(WebOpen("test1OpenWeb"))#添加测试函数
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
报错
test1OpenWeb (utest.WebOpen) ... ERROR
======================================================================
ERROR: test1OpenWeb (utest.WebOpen)
----------------------------------------------------------------------
TypeError: 'NoneType' object is not callable
----------------------------------------------------------------------
Ran 1 test in 7.884s
FAILED (errors=1)
Process finished with exit code 0
修改后
# runTest.py
import unittest
from utest import WebOpen
# suite = unittest.TestSuite()
suite = unittest.defaultTestLoader.discover('./',pattern='utest.py')# 识别了utest里所有测试方法
# suite.addTest(WebOpen("test1OpenWeb"))
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)