unittest原名为PyUnit,是由Java的JUnit衍生而来.它支持自动化测试,在测试中使用setup(初始化)和shutdown(关闭销毁)操作,组织测试用例为套件(批量运行),以及把测试和报告独立开来。为了实现这些,unittest以一种面向对象的方式产生了一些很重要的概念:
unittest中最核心的五个概念是:test case, test suite, testLoader,test runner, test fixture。
下面我们分别来解释这四个概念的意思,先来看一张unittest的静态类图(下面的类图以及解释均来源于网络,原文链接):
# coding=utf-8
__author__ = "小小渔夫"
from appium import webdriver
from common.HTMLTestRunner import HTMLTestRunner
import unittest
class LoginTest(unittest.TestCase):
def setUp(self):
desired_caps = {
'platformName': 'Android',
'deviceName': 'SGEEGEHIQ8I7CI90',
'platformVersion': '7.0',
'appPackage': 'com.XXX.mall',
'appActivity': '.business.main.MainActivity'
}
self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
def testCase(self):
self.driver.find_element_by_id("bottom_nav").click()
self.driver.find_element_by_name('使用其他方式登录').click()
self.driver.find_element_by_name('手机登录').click()
self.driver.find_element_by_id("username").send_keys("18300000000")
self.driver.find_element_by_name('获取验证码').send_keys("123456")
self.driver.find_element_by_id("btn").click()
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
filename = "E:\\report.html"
# stream测试报告写入文件的存储区域,verbosity参数可以控制输出的错误报告的详细程度,默认为1如果设为0,则不输出每一用例的执行结果,如果设为 2,则输出详细的执行结果
runner = HTMLTestRunner.HTMLTestRunner(title="测试报告标题", description="这是测试报告的描述", stream=open(filename, "wb"),verbosity=2, retry=0)
runner.run()