一、单元测试
小例子
def add(a,b):
sum = a + b
return sum
if __name__ == "__main__":
print(add(1,2))
二、测试用例
自动化用例
自动化用例.png三、测试框架
- 登陆案例
注意读取本地html的方式
from selenium import webdriver
import time
import os
import unittest
class LoginTest(unittest.TestCase):
def test_login(self):
driver = webdriver.Chrome()
driver.get('file:///'+os.path.abspath('login.html'))
time.sleep(3)
driver.find_element_by_name("user").send_keys("admin")
driver.find_element_by_name("password").send_keys("123")
driver.find_element_by_id("tijiao").click()
time.sleep(10)
t = driver.find_element_by_tag_name("body").text
print(t)
# if t == "登陆成功":
# print("pass")
# else:
# print("fail")
# driver.close()
# driver.quit()
self.assertTrue(t == "登陆成功")
login.html(登录页)
<!DOCTYPE html>
<html>
<title>登陆页面</title>
<body>
账号:
<input type = text name = "user" size = 16 />
密码:
<input type = password name = "password" size = 16 />
<button type = submit value = submit id = tijiao ><a href="index.html">登陆</a></button>
</body>
</html>
index.html(登陆成功页)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
登陆成功
</body>
</html>
- 编写测试类
import unittest
# 类名遵循驼峰命名法
class JisuanTestCase(unittest.TestCase):
def setUpClass(cls):
print("用例前只执行一次")
def tearDownClass(cls):
print("所有用例后执行一次")
# # 每个用例打开前都会执行
# def setUp(self):
# print("打开浏览器")
# # 每个用例完成都会执行一次
# def tearDown(self):
# print("关闭浏览器")
# 方法名以test开头
def testAdd(self):
self.assertEqual((1+2),3)
self.assertEqual(0+1,1)
def testMultiply(self):
self.assertEqual((0*10),0)
self.assertEqual((5*8),40)
if __name__ == "__main__":
unittest.main()
注意:
如果其中某个方法有报错不影响其他方法的测试
4.assert断言
assertLocation(判断当前是在正确的页面)
assertTitle(检查当前页面的 title 是否正确)
assertValue(检查 input 的值, checkbox 或 radio,有值为”on”无为”off”)
assertSelected(检查 select 的下拉菜单中选中是否正确)
assertSelectedOptions(检查下拉菜单中的选项的是否正确)
assertText(检查指定元素的文本)
assertTextPresent(检查在当前给用户显示的页面上是否有出现指定的文本)
assertTextNotPresent(检查在当前给用户显示的页面上是否没有出现指定的文本)
assertAttribute(检查当前指定元素的属性的值)
assertTable(检查 table 里的某个 cell 中的值)
assertEditable(检查指定的 input 是否可以编辑)
assertNotEditable(检查指定的 input 是否不可以编辑)
assertAlert(检查是否有产生带指定 message 的 alert 对话框)
verifyTitle (检查预期的页面标题)
verifyTextPresent (验证预期的文本是否在页面上的某个位置)
verifyElementPresent(验证预期的UI元素,它的HTML标签的定义,是否在当前网页上)
verifyText(核实预期的文本和相应的HTML标签是否都存在于页面上)
verifyTable(验证表的预期内容)
waitForPageToLoad(暂停执行,直到预期的新的页面加载)
waitForElementPresent (等待检验某元素的存在。为真时,则执行)
网友评论