web/app unittest UI自动化测试框架

框架结构

|-case 存放用例

|-------|_app

|--------------|_appDemo.py 演示示例

|-------|_web

|--------------|_webDemo.py 演示示例

|-public 存放公用函数方法

|-------|_xxx.py

|-report 存放自动生成的测试报告

|-------|_HTMLTestRunner.py 用于生成报告的第三方支持库

|-testrunner.py

代码展示
appDemo.py

import os
import unittest
import time
from public.loginApp import Mylogin
from appium import webdriver

# Returns abs path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)


class AndroidTests(unittest.TestCase):
    def setUp(self):
        desired_caps = {
   }
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = '5.1'
        desired_caps['deviceName'] = 'Android Emulator'
        desired_caps['noReset'] = 'True'
        desired_caps['app'] = PATH('E:/newCourse/zuiyou518.apk')
        desired_caps['unicodeKeyboard'] = 'True'
        desired_caps['resetKeyboard'] = 'True'
        desired_caps['appPackage'] = 'cn.xiaochuankeji.tieba'
        desired_caps['appActivity'] = '.ui.base.SplashActivity'


        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

    def tearDown(self):
        self.driver.quit()

    def testshouye01_01(self):
        '''验证首页导航栏文案显示是否正常'''
        time.sleep(8)
        self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/home_item").click()
        time.sleep(6)
        navText = self.driver.find_elements_by_id("cn.xiaochuankeji.tieba:id/title")
        self.assertEqual(navText[0].text,"关注")
        self.assertEqual(navText[1].text, "推荐")
        self.assertEqual(navText[2].text, "视频")
        self.assertEqual(navText[3].text, "图文")


    def testshouye01_02(self):
        '''验证帖子列表内容跳转'''
        time.sleep(8)
        self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/expand_content_view").click()
        time.sleep(3)
        forumDetailText = self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/tvTitle")
        self.assertEqual(forumDetailText.text,"帖子详情")


    def testshouye01_03(self):
        '''验证评论帖子功能'''
        Mylogin(self.driver).login()
        time.sleep(3)
        self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/iconTabItem").click()
        time.sleep(6)
        self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/expand_content_view").click()
        time.sleep(3)
        self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/etInput").send_keys("textCESHI")
        self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/send").click()
        sendContent = self.driver.find_elements_by_id("cn.xiaochuankeji.tieba:id/expandTextView")
        sendContentRawList = []
        for i in range(0, len(sendContent)):
            sendContentRawList.append(sendContent[i].text)
        sendContentList = "".join(sendContentRawList)
        self.assertIn("textCESHI", sendContentList)


if __name__ == '__main__':  #如果此py文件是程序入口,则按unittest框架执行
    suite = unittest.TestLoader().loadTestsFromTestCase(daYeUnittest)   #loadTestsFromTestCase()括号里填本py文件的类名
    unittest.TextTestRunner(verbosity=2).run(suite)
    # verbosity参数可以控制输出的错误报告的详细程度,只有3个取值:
    # 0 (quiet): 只显示执行的用例的总数和全局的执行结果。
    # 1 (default): 默认值,显示执行的用例的总数和全局的执行结果,并对每个用例的执行结果(成功T或失败F)有个标注。
    # 2 (verbose): 显示执行的用例的总数和全局的执行结果,并输出每个用例的详细的执行结果。

webDemo.py:

# coding=utf-8
from selenium import webdriver
import unittest
import os
import time
from public.login import Mylogin

class Gouwuche(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get("http://101.133.169.100/yuns/index.php")
        self.driver.maximize_window()
        time.sleep(5)

    def tearDown(self):
        filedir = "D:/test/screenshot/"
        if not os.path.exists(filedir):
            os.makedirs(os.path.join('D:/', 'test', 'screenshot'))
        screen_name = filedir + time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time())) + ".png"
        self.driver.get_screenshot_as_file(screen_name)
        self.driver.quit()


    def testGouwu01_03(self):
        '''购物车为空时文案显示是否正常'''
        Mylogin(self.driver).login()
        self.driver.find_element_by_xpath("//div[@class='small_cart_name']/span").click()
        time.sleep(3)
        emptyGouwuText = self.driver.find_element_by_xpath("//div[@class='r']/span")
        print(emptyGouwuText.text)
        self.assertEqual("购物车内暂时没有商品",emptyGouwuText.text)


if __name__ == '__main__':  #如果此py文件是程序入口,则按unittest框架执行
    suite = unittest.TestLoader().loadTestsFromTestCase(daYeUnittest)   #loadTestsFromTestCase()括号里填本py文件的类名
    unittest.TextTestRunner(verbosity=2).run(suite)
    # verbosity参数可以控制输出的错误报告的详细程度,只有3个取值:
    # 0 (quiet): 只显示执行的用例的总数和全局的执行结果。
    # 1 (default): 默认值,显示执行的用例的总数和全局的执行结果,并对每个用例的执行结果(成功T或失败F)有个标注。
    # 2 (verbose): 显示执行的用例的总数和全局的执行结果,并输出每个用例的详细的执行结果。

HTMLTestRunner.py:

# -*- coding: utf-8 -*-
"""
A TestRunner for use with the Python unit testing framework. It
generates a HTML report to show the result at a glance.
The simplest way to use this is to invoke its main method. E.g.
    import unittest
    import HTMLTestRunner
    ... define your tests ...
    if __name__ == '__main__':
        HTMLTestRunner.main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值