@paramunittest.parametrized 参数化跟tearDownClass有冲突吗
来源:1-1 为什么做这门课?该怎么学

你的转身
2021-12-22
import time
import unittest
import paramunittest
from chapter3.po_demo import SearchKW
# class Q(unittest.TestCase, SearchKW):
#
# def test_searh_kw(self):
# self.get()
# self.search_kw()
# assert self.element(self.searchInput).get_attribute('value') == 'hello'
# # time.sleep(5)
# self.driver.quit()
@paramunittest.parametrized(
{'keyWords': '111', 'expect': '111'},
{'keyWords': '222', 'expect': '222'}
)
class ParamTest(unittest.TestCase, SearchKW):
"""支持参数化测试样例"""
@classmethod
def setUpClass(cls) -> None:
print('*********************in setUpClass**********************************')
cls.cls_get()
def setParameters(self, keyWords, expect):
self.keyWords = keyWords
self.expect = expect
def test_search_kw(self):
# self.get()
self.search_kw(key_words=self.keyWords)
# assert self.element(self.searchInput).get_attribute('value') == self.expect
# self.assertEqual(self.element(self.searchInput).get_attribute('value'), self.expect)
time.sleep(3)
@classmethod
def tearDownClass(cls) -> None:
print('&&&&&&&&&&&&&&&&&&&&&&in tearDownClass&&&&&&&&&&&&&&&&&&&')
cls.driver.quit()
if __name__ == '__main__':
unittest.main()
1.第二次用参数化执行的时候报错,我猜是tearDownClass把session关闭导致,可是通过打印日志得知,setUpClass tearDownClass每个参数都会执行一次,为了执行第一个参数的tearDownClass会影响第二个参数的执行呢?请问老师该怎么改?
谢谢
写回答
1回答
-
托尼老师
2021-12-23
参数化时,一条完整的用例,从前置处理到后置处理,都会从参数中取值,最终执行完成。
你的测试类的流程是:打开网页,输入参数检索,关闭浏览器。
当第一组测试数据执行完成后,浏览器被关闭,这时第二组数据执行时,已经没有浏览器会话去打开网页了,必然报错。
要解决这个问题,可以修改tearDownClass,使得每次执行完成后,网页回到初始状态。
022021-12-29
相似问题