- 1. 调用Javascript
- 2.处理HTML5视频播放
- 3.滑动选择日期
- 4.窗口截图
- 5.认识单元测试
- 6.断言方法
- 7.判断某年是否为闰年
- 8.测试用例的执行顺序
- 9.跳过测试和预期失败
- 10.Fixture
- 11.执行多个测试文件
- 12.编写Web自动化测试
1. 调用Javascript
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.set_window_size(800,600)
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
#通过Javascript设置浏览器窗口的滚动条位置
js="window.scrollTo(100,450);"
driver.execute_script(js)
2.处理HTML5视频播放
from time import sleep
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://videojs.com/")
video = driver.find_element_by_id("preview-player_html5_api")
# 返回播放文件地址
url=driver.execute_script("return arguments[0].currentSrc;",video)
print(url)
#播放视频
print("start")
driver.execute_script("arguments[0].play()",video)
#播放15秒
sleep(15)
#暂停视频
print("stop")
driver.execute_script("arguments[0].pause()",video)
driver.quit()
3.滑动选择日期
from time import sleep
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.jq22.com/yanshi4976")
sleep(2)
driver.switch_to.frame("iframe")
driver.find_element_by_id("appDate").click()
#定位要滑动的年、月、日
dwwos = driver.find_element_by_class_name("dwwo")
year=dwwos[0]
month=dwwos[1]
day = dwwos[2]
action = webdriver.TouchActions(driver)
action.scroll_from_element(year,0,5).perform()
action.scroll_from_element(month,0,30).perform()
action.scroll_from_element(day,0,30).perform()
4.窗口截图
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
#截取当前窗口,指定截图图片的保存位置
driver.save_screenshot("./baidu_img.png")
5.认识单元测试
#创建Calculator类
import importlib
class Calculator:
"""用于完成两个数的加、减、乘、除"""
def __init__(self,a,b):
self.a = int(a)
self.b = int(b)
# 加法
def add(self):
return self.a + self.b
# 减法
def sub(self):
return self.a - self.b
#乘法
def mul(self):
return self.a * self.b
# 除法
def div(self):
return self.a / self.b
#测试Calculator类V1版
from calculator import Calculator
import importlib
def test_add():
c = Calculator(3,5)
result = c.add()
assert result == 8, '加法运算失败'
def test_sub():
c = Calculator(7,2)
result = c.sub()
assert result == 5, '减法运算失败'
def test_mul():
c = Calculator(3,3)
result = c.mul()
assert result == 10, '乘法运算失败'
def test_div():
c = Calculator(6,2)
result = c.div()
assert result == 3, '除法运算失败'
if __name__ == '__main__':
test_add()
test_sub()
test_mul()
test_div()
#测试Calculator类V2版
import unittest
from calculator import Calculator
class TestCalculator(unittest.TestCase):
def test_add(self):
c = Calculator(3, 5)
result = c.add()
self.assertEqual(result,8)
def test_sub(self):
c = Calculator(7, 2)
result = c.sub()
self.assertEqual(result,5)
def test_mul(self):
c = Calculator(3, 3)
result = c.mul()
self.assertEqual(result,10)
def test_div(self):
c = Calculator(6, 2)
result = c.div()
self.assertEqual(result,3)
if __name__ == '__main__':
unittest.main()
#测试Calculator类V3版
from calculator import Calculator
import unittest
import importlib
class TestCalculatorV2(unittest.TestCase):
#测试用例前置动作
def setUp(self):
print("test start:")
#测试用例后置动作
def tearDown(self):
print("test end")
def test_add(self):
c = Calculator(3, 5)
result = c.add()
self.assertEqual(result, 8)
def test_sub(self):
c = Calculator(7, 2)
result = c.sub()
self.assertEqual(result, 5)
def test_mul(self):
c = Calculator(3, 3)
result = c.mul()
self.assertEqual(result, 10)
def test_div(self):
c = Calculator(6, 2)
result = c.div()
self.assertEqual(result, 3)
if __name__ == '__main__':
#创建测试套件
suit = unittest.TestSuite()
suit.addTest(TestCalculatorV2("test_add"))
suit.addTest(TestCalculatorV2("test_sub"))
suit.addTest(TestCalculatorV2("test_mul"))
suit.addTest(TestCalculatorV2("test_div"))
#创建测试运行器
runner = unittest.TextTestRunner()
runner.run(suit)
6.断言方法
import unittest
import importlib
class TestAssert(unittest.TestCase):
def test_equal(self):
self.assertEqual(2+2,4)
self.assertEqual("python","python")
self.assertNotEqual("hello","python")
def test_in(self):
self.assertIn("hello","hello world")
self.assertNotIn("hi","hello")
def test_true(self):
self.assertTrue(True)
self.assertFalse(False)
if __name__ == '__main__':
unittest.main()
7.判断某年是否为闰年
class LeapYear:
def __init__(self,year):
self.year = int(year)
def answer(self):
year = self.year
if year%100==0:
if year&400==0:
#整百年能被400整除的是闰年
return "{0}是闰年".format(year)
else:
return "{0}不是闰年".format(year)
else:
if year%4==0:
#非整百年能被4整除的是闰年
return "{0}是闰年".format(year)
else:
return "{0}不是闰年".format(year)
#测试某年是否为闰年
import unittest
import importlib
from leap_year import LeapYear
class TestLeapYear(unittest.TestCase):
def test_2000(self):
ly = LeapYear(2000)
self.assertEqual(ly.answer(),"2000是闰年")
def test_2004(self):
ly = LeapYear(2004)
self.assertEqual(ly.answer(),"2004是闰年")
def test_2017(self):
ly = LeapYear(2017)
self.assertEqual(ly.answer(),"2017不是闰年")
def test_2100(self):
ly = LeapYear(2100)
self.assertEqual(ly.answer(),"2100不是闰年")
if __name__=='__main__':
unittest.main()
8.测试用例的执行顺序
#-*-coding: utf-8-*-
#@Time :2021/12/24 5:26
#@Author: sixiaoyou
#@Email: 834628301@qq.com
#@File: TestBdd.py
import unittest
import importlib
class TestBdd(unittest.TestCase):
def setUp(self):
print("test TestBdd:")
def test_ccc(self):
print("test ccc")
def test_aaa(self):
print("test aaa")
class TestAdd(unittest.TestCase):
def setUp(self):
print("test TestAdd:")
def test_bbb(self):
print("test bbb")
# if __name__ == "__main__":
# unittest.main()
if __name__=="__main__":
#构造测试集
suite = unittest.TestSuite()
suite.addTest(TestBdd("test_aaa"))
suite.addTest(TestBdd("test_ccc"))
suite.addTest(TestAdd("test_bbb"))
runner = unittest.TextTestRunner()
runner.run(suite)
9.跳过测试和预期失败
import unittest
class MyTest(unittest.TestCase):
@unittest.skip("直接跳过测试")
def test_skip(self):
print("test aaa")
@unittest.skipIf(3>2,"当条件为真时跳过测试")
def test_skip_if(self):
print("test bbb")
@unittest.skipUnless(3>2,"当条件为真时执行测试")
def test_skip_unless(self):
print('test ccc')
@unittest.expectedFailure
def test_expected_failure(self):
self.assertEqual(2,3)
if __name__=="__main__":
unittest.main()
10.Fixture
import unittest
def setUpModule():
print("test module start >>>>>>>>>>>>>>>")
def tearDownModule():
print("test module end >>>>>>>>>>>>>>>>>")
class MyTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("test class start =============>")
@classmethod
def tearDownClass(cls):
print("test class end ==================>")
def setUp(self):
print("test case start -->")
def tearDown(self):
print("test case end -->")
def test_case1(self):
print("test case1")
def test_case2(self):
print("test case2")
if __name__ == "__main__":
unittest.main()
11.执行多个测试文件
import unittest
#定义测试用例的目录为当前目录中的test_case/目录
test_dir ='../20211220'
suits=unittest.defaultTestLoader.discover(test_dir,pattern='test*.py')
if __name__=="__main__":
runner = unittest.TextTestRunner()
runner.run(suits)
12.编写Web自动化测试
#测试百度V1
import unittest
from time import sleep
from selenium import webdriver
class TestBaidu(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.base_url = "https://www.baidu.com"
def test_search_key_selenium(self):
self.driver.get(self.base_url)
self.driver.find_element_by_id("kw").send_keys("selenium")
self.driver.find_element_by_id("su").click()
sleep(2)
title = self.driver.title
self.assertEqual(title,"selenium_百度搜索")
def test_search_key_unittest(self):
self.driver.get(self.base_url)
self.driver.find_element_by_id("kw").send_keys(("unittest"))
self.driver.find_element_by_id("su").click()
sleep(2)
title=self.driver.title
self.assertEqual(title,"unittest_百度搜索")
def tearDown(self):
self.driver.quit()
if __name__=="__main__":
unittest.main()
#测试百度V2
import unittest
from time import sleep
from selenium import webdriver
class TestBaiduV2(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.base_url = "http://www.baidu.com"
def baidu_search(self,search_key):
self.driver.get(self.base_url)
self.driver.find_element_by_id("kw").send_keys(search_key)
self.driver.find_element_by_id("su").click()
sleep(2)
def test_search_key_selenium(self):
search_key = "selenium"
self.baidu_search(search_key)
self.assertEqual(self.driver.title,search_key+"_百度搜索")
def test_search_key_unittest(self):
search_key = "unittest"
self.baidu_search(search_key)
self.assertEqual(self.driver.title,search_key + "_百度搜索")
def tearDown(self):
self.driver.quit()
if __name__=="__main__":
unittest.main()
#测试百度V3
from time import sleep
from selenium import webdriver
class TestBaiduV3(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome()
cls.base_url = "http://www.baidu.com"
def baidu_search(self,search_key):
self.driver.get(self.base_url)
self.driver.find_element_by_id("kw").send_keys(search_key)
self.driver.find_element_by_id("su").click()
sleep(2)
def test_search_key_selenium(self):
search_key = "selenium"
self.baidu_search(search_key)
self.assertEqual(self.driver.title,search_key+"_百度搜索")
def test_search_key_unittest(self):
search_key = "unittest"
self.baidu_search(search_key)
self.assertEqual(self.driver.title,search_key + "_百度搜索")
@classmethod
def tearDownClass(cls):
cls.driver.quit()
if __name__=="__main__":
unittest.main()



