测试用例模块化特点:为po模型做准备。

1、提取公共方法。

2、提取数据。

3、提取逻辑。

# @Author:lsj
# @version V1.0
# -*- coding:UTF-8 -*-
import unittest
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import HTMLTestRunner
def openBroswer():
driver = webdriver.Chrome()
return driver def openUrl(driver, url):
driver.get(url)
driver.maximize_window() # 元素是否存在
def ele_is_presence(driver,tuple_arg):
return WebDriverWait(driver, 10).until(EC.presence_of_element_located(tuple_arg)) #点击操作
def ele_click(driver,tuple_arg):
ele_is_presence(driver,tuple_arg).click() # 发送文本
def ele_sendKeys(driver,tuple_arg,keyword):
ele_is_presence(driver,tuple_arg).send_keys(keyword) # 检查登录结果
def checkResult(driver, loginfo):
try:
ele_is_presence(driver, loginfo)
print ("登录状态验证通过!")
except:
print ("登录失败!") class Test_Login(unittest.TestCase):
def testm1(self):
# 用例模式一
url = 'http://daxue.qysxy.com.cn/admin/static/front/html/login.html'
account=['fuguang']
pwd=['']
c = ['']
username=(By.NAME,"username") # 用户名输入框
password=(By.NAME,"password") # 密码输入框
code = (By.ID,"code") # 验证码输入框
loginbtn = (By.ID, 'loginBtn') # 登录按钮
# 实例化driver
driver = openBroswer()
# 打开url
openUrl(driver, url)
# 输入用户名
ele_sendKeys(driver,username,account)
# 输入密码
ele_sendKeys(driver,password,pwd)
# 输入验证码
ele_sendKeys(driver,code,c)
# 点击登录按钮
ele_click(driver,loginbtn) print("模式一执行完成!!") def testm2(self):
# 用例模式二
url = "http://daxue.qysxy.com.cn/admin/static/front/html/login.html"
username = (By.NAME, 'username')# 用户名输入框
password = (By.NAME, 'password')# 密码输入框
code = (By.ID, "code") # 验证码输入框
loginbtn = (By.ID, 'loginBtn') # 登录按钮
driver=openBroswer()
openUrl(driver,url)
sleep(3)
# 输入用户名
ele_sendKeys(driver,username,'fuguang')
# 输入密码
ele_sendKeys(driver,password,'')
# 输入验证码
ele_sendKeys(driver,code,'')
# 点击登录按钮
ele_click(driver,loginbtn)
print("模式二执行完成!!") sleep(3)
driver.quit() if __name__ == '__main__':
# Test_Login() # 测试报告
testCase = unittest.TestLoader().loadTestsFromTestCase(Test_Login)
# 将多个测试类加载到测试集合中
suite = unittest.TestSuite([testCase])
# 原始版本
f = open("report.html", "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=f, title="测试报告", description="测试报告描述")
runner.run(suite)

测试用例模块化

出测试报告

Selenium3+python自动化012-测试用例模块化的更多相关文章

  1. Selenium3+python自动化012+日志logging基本用法、高级用法

    1.关键字: login 登录 log 日志 logging python日志模块 2.什么叫日志: 日志用来记录用户行为或者代码的执行过程 3.日志使用的地方: 1.排错的时候需要打印很多细节来帮助 ...

  2. selenium3+python自动化50-环境搭建(firefox)

    前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...

  3. selenium3+python自动化50-环境搭建(firefox)【转载】

    前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...

  4. web端自动化——Selenium3+python自动化(3.7版本)-火狐62版本环境搭建

    前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要.本系列依然以selenium3为基础. 一.selenium简介 Sel ...

  5. web端自动化——Selenium3+python自动化(3.7版本)-chrome67环境搭建

    前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要.本系列依然以selenium3为基础. 一.selenium简介 Sel ...

  6. Selenium3+python自动化010-UnitTest框架简介和单元测试框架使用

    一.UnitTest介绍 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过, ...

  7. Selenium3+python自动化011-unittest生成测试报告(HTMLTestRunner)

    批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTest ...

  8. Selenium3+python自动化006+自动化测试概述

    自动化测试概述 1.自动化分类: (1)单元测试自动化: 单元测试(Unit):模拟各种异常场景,外部依赖较少,且可以做测试单元到最小的一种测试方法. Java单元测试框架Junit.TestNG; ...

  9. Selenium3+python自动化006-环境搭建

    一.selenium简介 1.Selenium历史 (1)Selenium 1.0: Selenium IDE      Selenium Grid    Selenium RC(核心功能) Sele ...

随机推荐

  1. MySQL基础(4) | 视图

    MySQL基础(4) | 视图 基本语法 1.创建 CREATE VIEW <视图名> AS <SELECT语句> 语法说明如下. <视图名>:指定视图的名称.该名 ...

  2. App自动化测试环境搭建

    只做记录和注意点,详细内容不做解释 环境:win+appium+夜神模拟器+python 需要用到的工具: 1.java JDK 2. node.js 3. Android SDK 4.Appium- ...

  3. 什么是AOP面向切面编程思想

    一.什么是AOP? 1.AOP不是一种语言,是一种编程范式 常见的编程范式: 面向过程.面向对象.函数式编程.事件驱动编程等 2.AOP可以解决特定问题,不能解决所有问题. 3.是面向对象的补充,不是 ...

  4. 关于...corresponds to your MySQL server version for the right syntax to use near '?' at line 1的解决办法

    完整报错信息: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual tha ...

  5. <packaging>pom</packaging>是什么意思

    <packaging>pom</packaging>是什么意思? 答: 以下配置<packaging>pom</packaging>的意思是使用mave ...

  6. 【第二篇】xLua中lua加载方式

     xLua中lua文件加载方式 1. 直接执行字符串方式 LuaEnv luaenv = new LuaEnv(); luaenv.DoString("CS.UnityEngine.Debu ...

  7. 吴裕雄--天生自然 R语言数据可视化绘图(1)

    par(ask=TRUE) opar <- par(no.readonly=TRUE) # make a copy of current settings attach(mtcars) # be ...

  8. 首次使用Lambda表达式-sunziren

    需要将List<Apple> list = new ArrayList<Apple>(); 按照Apple对象中的price属性从大到小排序. 第一个念头闪过的是冒泡排序,转念 ...

  9. matlab初探寻

    matlab <iframe src="//player.bilibili.com/player.html?aid=74994893&cid=128293306&pag ...

  10. 剑指offer-面试题4-二维数组中的查找-数组

    /* 题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. */ /* 解题 ...