自动化测试中的单元测试
测试单元简单编写
python语言
import unittest
from HTMLTestRunner import HTMLTestRunner
##定义测试类 继承unittest
class TestUnit(unittest.TestCase):
## 初始化方法 每个用例执行前都会执行一次
def setUp(self):
print("这个是setup方法---------")
## 测试的方法必须是 test开头
def testcase01(self):
print("这个是第一条用例")
def testcase02(self):
print("这个是第二条用例")
##收尾方法 每个用例执行后都会执行
def tearDown(self):
print("这个是tearDown方法----------")
if __name__ == '__main__':
## 这个是执行的方法
## unittest.main()
## 实例化测试套件 将用例加入在套件中
testSuite = unittest.TestSuite()
testSuite.addTest(TestUnit("testcase01"))
testSuite.addTest(TestUnit("testcase02"))
## 用二进制的形式 打开当前目录下面的测试报告
fp =open("./result.html","wb");
## 实例化htmlrunner类 传入对应的参数
runner = HTMLTestRunner(stream=fp,title="自动化测试文件报告",description="这是测试文件报告");
## 生成测试报告
runner.run(testSuite)
fp.close()
运行会生成测试报告
有时候报告会生成失败
在pyCharm 运行会失败
然后应该在这里选对
alt+shitft + f10
打开选择运行的单元
如果还不可以 在加上Fn
在自动化测试运用单元测试
可以将这个项目自动跑完并且自动生成测试报告
报告如下:
下面这是一个完整的
自动化测试单元 主要还是针对于禅道的
登录 添加产品
from selenium import webdriver
from time import sleep
import unittest
from HTMLTestRunner import HTMLTestRunner
from selenium.webdriver.support.select import Select
class TestZentao(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.get("http://127.0.0.1/zentao/user-login-L3plbnRhby8=.html")
self.driver.find_element_by_id("account").send_keys("admin")
self.driver.find_element_by_name("password").send_keys("1997fhx..")
self.driver.find_element_by_id("submit").click()
def testbianli(self):
driver = self.driver
driver.find_element_by_link_text("产品").click()
driver.find_element_by_link_text("项目").click()
driver.find_element_by_link_text("测试").click()
driver.find_element_by_link_text("文档").click()
driver.find_element_by_link_text("统计").click()
driver.find_element_by_link_text("组织").click()
driver.find_element_by_link_text("后台").click()
print("遍历所有TAB成功!!!")
driver.save_screenshot("./11.png")
def testaddproduct(self):
driver = self.driver
driver.find_element_by_link_text("产品").click()
driver.find_element_by_partial_link_text("添加产品").click()
driver.find_element_by_name("name").send_keys("产品6")
driver.find_element_by_name("code").send_keys("code006")
## 定位 select
s1 = driver.find_element_by_id("PO")
## display: none-----这个显示为隐式的
## document.getElementById('PO').style.display='block' 将display显示为block 即可变成显示的元素
## 这个为js的代码
js1 = "document.getElementById('PO').style.display='block'";
## 执行js脚本
driver.execute_script(js1);
Select(s1).select_by_value("PM1")
## 定位s2
s2 = driver.find_element_by_id("QD")
js2 = "document.getElementById('QD').style.display='block'";
driver.execute_script(js2)
Select(s2).select_by_value("QA1")
## 定位s3
s3 = driver.find_element_by_id("RD")
js3 = "document.getElementById('RD').style.display='block'";
driver.execute_script(js3)
Select(s3).select_by_value("PM2")
## 产品类型是显示的 不用js 直接用selected就可以
s4 = driver.find_element_by_id("type")
Select(s4).select_by_value("branch")
## 富文本框 内置的另一个页面 iframe 富文本编辑框
## 首先定位到 iframe
iframe = driver.find_element_by_class_name("ke-edit-iframe")
## 将driver转换到 iframe页面上
driver.switch_to_frame(iframe)
## 将这个富文本框里面填入数据
driver.find_element_by_class_name("article-content").send_keys("富文本框填入数据")
## 在这个页面是填完数据之后 放回他原来的页面
driver.switch_to_default_content()
## 保存 在页面的下面 他不会自动滑下去 需要手动将鼠标滑下去
## 需要拖下去 这个js表示拖到最下面
js = "var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
driver.find_element_by_id("submit").click()
## 再次查看产品
driver.find_element_by_xpath("//*[@id='pageNav']/div[1]/div/button").click()
driver.find_element_by_partial_link_text("所有产品").click()
## 点进这个场产品
driver.find_element_by_xpath("//*[@id='productTableList']/tr[1]/td[2]/a").click()
driver.find_element_by_xpath("//*[@id='mainContent']/div[1]/div[2]/div/a[4]").click()
## 会出现弹出框 点击弹出框的 按钮 将此页面转换为 弹出框的页面
alter = driver.switch_to_alert()
## 点击确认按钮
alter.accept();
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
testsuit = unittest.TestSuite()
testsuit.addTest(TestZentao("testbianli"))
testsuit.addTest(TestZentao("testaddproduct"))
# runner = unittest.TextTestRunner()
# runner.run(testsuit)
fp = open("./result.html",'wb')
runner = HTMLTestRunner(stream=fp,title="禅道自动化测试报告",description="自动化测试报告")
runner.run(testsuit)
fp.close()