自己做发小说网站,微信小程序怎么做网站,行业门户网站 建站,wordpress 设置域名Unittest框架
Unittest框架:框架测试模块测试管理模块测试统计模块#xff0c;python的内置模块 import unittest Unittest框架四大组件: 1、TestCase 测试用例 2.TestFixture 测试用例夹具 测试用例需要执行的前置和后置 3.TestSuite 测试套件 把需要执行的测试用例汇总在一…Unittest框架
Unittest框架:框架测试模块测试管理模块测试统计模块python的内置模块 import unittest Unittest框架四大组件: 1、TestCase 测试用例 2.TestFixture 测试用例夹具 测试用例需要执行的前置和后置 3.TestSuite 测试套件 把需要执行的测试用例汇总在一起 4、TestRunner 测试运行 执行测试用例 Test Case 测试用例 规则:
1、用例类必须继承Unittest.TestCase,并且以test开头 2、测试方法都必须以test_开头 3、用例执行的顺序按照ASCII 0.9 a-z A-Z 顺序来执行用例 unittest也可以通过会令运行 命令执行TestShopnc类下的所有用例:python -m unittest 用例文件名.用例类名
执行某一条用例:python -m unittest 用例文件名.用例类.用例名称
import time
import unittest
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
class TestShopnc(unittest.TestCase):#每个用例前执行 有多少用例就执行多少次def setUp(self) - None:print(01 每个用例前执行 有多少用例就执行多少次)#每个类之前执行 只执行一次classmethoddef setUpClass(cls) :print(02 每个类之前执行 只执行一次)#每个用例执行之后执行 有多少用例就执行多少次def tearDown(self) - None:print(03 每个用例执行之后执行 有多少用例就执行多少次)classmethod#每个类之后执行 只执行一次def tearDownClass(cls) - None:print(04 每个类之后执行 只执行一次)def test_01_login(self):print(用例1)def test_02_shopping(self):print(用例2)def test_03_add_cart(self):print(用例3)def test_04_payment(self):print(用例4)if __name__ __main__:i10print(i)suiteunittest.TestSuite()#添加一个测试用例suite.addTest(TestShopnc(methodNametest_01_login))#添加多个suite.addTests([TestShopnc(test_02_shopping),TestShopnc(test_04_payment)])unittest.main(defaultTestsuite)#用例加载器suite2 unittest.TestSuite()case2unittest.TestLoader().loadTestsFromTestCase(TestShopnc)suite2.addTests(case2)unittest.TextTestRunner().run(suite2)suite3 unittest.TestSuite()#查找test开始的py文件case3 unittest.defaultTestLoader.discover(test*.py)suite3.addTests(case3)unittest.main(defaultTestsuite3)问题如果使用了TestSuite 运行py 文件时还是执行了所有测试用例 解决方案 注意不用在文件中点击运行这种方式执行还是会执行所有测试用例 原因没有执行if name ‘main’: 中的代码
用例状态 . 成功 E 用例异常 F 用例执行失败
登录京东搜索商品加入购物车 登录 需要滑块验证 采取手动方式
import time
import unittest
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from DrissionPage import WebPage
from DrissionPage.common import By as DBylogin_name 账户
pwd 密码
js_txtvar list$(.p-o-btn.addcart).filter(function(index, element) {return $(this).attr(class).indexOf(disabled)-1});if(list.length0){list[0].click();}
class TestShopnc(unittest.TestCase):#每个用例前执行 有多少用例就执行多少次def setUp(self) - None:print(01 每个用例前执行 有多少用例就执行多少次)#每个类之前执行 只执行一次classmethoddef setUpClass(cls) :cls.web_driverwebdriver.Firefox()cls.web_pageWebPage(d)print(02 每个类之前执行 只执行一次)#每个用例执行之后执行 有多少用例就执行多少次def tearDown(self) - None:print(03 每个用例执行之后执行 有多少用例就执行多少次)classmethod#每个类之后执行 只执行一次def tearDownClass(cls):cls.web_driver.quit()cls.web_page.quit()print(04 每个类之后执行 只执行一次)# selenuim demo 开始def test_01_login(self):urlhttps://passport.jd.com/new/login.aspxself.web_driver.get(https://passport.jd.com/new/login.aspx)el(By.ID,loginname)WebDriverWait(self.web_driver,10).until(EC.presence_of_element_located(el))self.web_driver.find_element(*el).send_keys(login_name)el (By.ID, nloginpwd)WebDriverWait(self.web_driver, 10).until(EC.presence_of_element_located(el))self.web_driver.find_element(*el).send_keys(pwd)el (By.ID, loginsubmit)WebDriverWait(self.web_driver, 10).until(EC.presence_of_element_located(el))self.web_driver.find_element(*el).click()# 需要滑块验证采取手动time.sleep(15)print(self.web_driver.current_url)if https://aq.jd.com/certified/index in self.web_driver.current_url:time.sleep(3)#验证按钮self.web_driver.execute_script($(.btn-def.btn-xl.mb20).click())time.sleep(3)#发送短信按钮self.web_driver.execute_script($(.btn-def.btn-msg.btn-l).click())time.sleep(10)#提交验证self.web_driver.execute_script($(.btn-primary.btn-m).click())time.sleep(30)def test_02_shopping(self):#keyif https://www.jd.com not in self.web_driver.current_url:self.web_driver.get(https://www.jd.com)el(By.ID,key)WebDriverWait(self.web_driver, 10).until(EC.presence_of_element_located(el))self.web_driver.find_element(*el).send_keys(三只松鼠大礼包)time.sleep(5)#//*[idsearch]/div/div[2]/buttonel (By.XPATH, //*[idsearch]/div/div[2]/button)WebDriverWait(self.web_driver, 10).until(EC.presence_of_element_located(el))self.web_driver.find_element(*el).click()time.sleep(5)def test_03_add_cart(self):time.sleep(5)self.web_driver.execute_script(js_txt)# el(By.XPATH,/html/body/div[5]/div[2]/div[2]/div[1]/div/div[2]/ul/li[5]/div/div[7]/a[3])# WebDriverWait(self.web_driver, 10).until(EC.presence_of_element_located(el))# self.web_driver.find_element(*el).click()time.sleep(20)#selenuim demo 结束#drissionpage demo 开始def test_04_login(self):self.web_page.get(https://passport.jd.com/new/login.aspx)el(DBy.ID,loginname)self.web_page.wait.eles_loaded(el)self.web_page.ele(el).clear()print(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1)self.web_page.ele(el).input(login_name)print(2222222222222222222222222222222222)el (DBy.ID, nloginpwd)self.web_page.wait.eles_loaded(el)self.web_page.ele(el).input(pwd)el (DBy.ID, loginsubmit)self.web_page.wait.eles_loaded(el)self.web_page.ele(el).click()# 需要滑块验证采取手动time.sleep(15)print(self.web_page.url)if https://aq.jd.com/certified/index in self.web_page.url:time.sleep(3)#验证按钮self.web_page.run_js($(.btn-def.btn-xl.mb20).click())time.sleep(3)#发送短信按钮self.web_page.run_js($(.btn-def.btn-msg.btn-l).click())time.sleep(10)#提交验证self.web_page.run_js($(.btn-primary.btn-m).click())time.sleep(30)def test_05_shopping(self):#keyif https://www.jd.com not in self.web_page.url:self.web_page.get(https://www.jd.com)el(DBy.ID,key)self.web_page.wait.eles_loaded(el)self.web_page.ele(el).input(麻辣王子)time.sleep(5)el (DBy.XPATH, //*[idsearch]/div/div[2]/button)self.web_page.wait.eles_loaded(el)self.web_page.ele(el).click()time.sleep(5)def test_06_add_cart(self):time.sleep(5)self.web_page.run_js(js_txt)time.sleep(10)#drissionpage demo 结束