单元测试框架
import unittest
class Test_api(unittest.TestCase):
def test_mashang(self):
print('ms3435')
def test_mashang2(self):
print('ms2')
def test_mashang3(self):
print('ms3')
self.assertTrue(True)
测试套件
import unittest
from test_api import Test_api
if __name__=='__main__':
suite=unittest.TestSuite()
suite.addTest(Test_api('test_mashang'))
unittest.main(defaultTest='suite')
测试套件发射器(启动所有套件下的py文件):
import unittest
from test_api import Test_api
if __name__=='__main__':
unittest.defaultTestLoader.discover(r'D:\pycharm\PyCharm Community Edition 2021.1.3\jbr\bin\pythonProject\pythonProject37', pattern='test*.py',)
unittest.main()
结果
OK
ms3435
ms2
ms3
setUp和tearDown
普通的不用加装饰器,类方法要加装饰器 @classmethod不然会报错
class Test_api(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
print('前')
@classmethod
def tearDownClass(cls) -> None :
print('后后后')
无条件忽略装饰器:
@unittest.skip(reason='无条件忽略')
def test_mashang2(self):
print('ms2')
True条件忽略装饰器:
age=16
@unittest.skipIf(age<18,reason='年龄小于18,未成年')
def test_mashang(self):
print('ms3435')
False条件忽略装饰器:
age=20
@unittest.skipUnless(age<18,reason='忽略')
def test_mashang(self):
print('ms3435')
断言判断
在当前网址上:
Self.assertin(‘index.php’,driver.current_url)
在源码 上:
Driver.switch_to frame('框架名')
Self.assertin(‘退出’,driver,page_source)
Driver.switch_to.default_content()
定位一组元素
定位一组元素:
Driver,fing_elements(By.XPATH,’//IMG[@src=’images/icon_edit.gif’)
Print(len(list))
点击第一个元素
List[0].click()
F12可以暂停浏览器
文本断言
text=Driver,fing_elements(By.XPATH,’//IMG[@src=’images/icon_edit.gif’).text
Print(text)
Self.assertequan(text,’编辑商品成功’