Python分类测试代码实例汇总


Posted in Python onJuly 23, 2020

1.自动化测试里面的测试用例设计的一些方法

解耦、可以独立运行、需要灵活切换

设计思路: 脚本功能分析(分步骤)和模块化分层(拆分为多模块)

project

login_order.py #登录下单测试用例
category.py #菜单分类测试用例

all_test.py #主入口

login_order.py

# -*- coding: UTF-8 -*-
import unittest
import time
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains


class LoginOrderTestCase(unittest.TestCase):
  def setUp(self):
    print("测试开始")
    self.driver = webdriver.Firefox()
    self.driver.implicitly_wait(20)
    self.base_url = "https://xdclass.net"
    self.driver.get(self.base_url)

  def tearDown(self):
    print("单个测试用例结束")
    pass
    #单个测试用例结束
  
  def test_login_order(self):
    u"登录测试用例"
    driver = self.driver
    #登录框
    login_ele = driver.find_element_by_css_selector("#login")
    ActionChains(driver).click(login_ele).perform()

    sleep(2)
    #查找输入框,输入账号,输入框要提前清理里面的数据
    driver.find_element_by_id("phone").clear()
    driver.find_element_by_id("phone").send_keys("13113777338")
    #查找密码输入框,输入密码
    driver.find_element_by_id("pwd").clear()
    driver.find_element_by_id("pwd").send_keys("123456789")

    #拿到登录按钮
    login_btn_ele = driver.find_element_by_css_selector("button.login")
    #触发点击事件,登录
    login_btn_ele.click()
    #判断登陆是否成功,逻辑-》鼠标移到上面,判断弹窗字符
    #获取鼠标上移的元素
    user_info_ele = driver.find_element_by_css_selector(".user_head_portrait")
    sleep(1)
    #hover触发
    ActionChains(driver).move_to_element(user_info_ele).perform()
    sleep(1)
    #获取用户名称元素
    user_name_ele = driver.find_element_by_css_selector(".img_name > span:nth-child(2)")
    print("===测试结果==")
    print(user_name_ele.text)

    name = user_name_ele.text
    #self.assertEqual(name, u"二当家小D",msg="登录失败")

    video_ele = driver.find_element_by_css_selector("div.hotcourses:nth-child(3) > div:nth-child(2) > div:nth-child(1) > ul:nth-child(1) > li:nth-child(1) > a:nth-child(1) > div:nth-child(1) > img:nth-child(1)")
    video_ele.click()
    sleep(2)

    buy_btn_ele = driver.find_element_by_css_selector(".learn_btn > a:nth-child(1)")

    buy_btn_ele.click()
    print("进入下单页面")
    
if __name__ == '__main__':
    unittest.main()

category.py

# -*- coding: UTF-8 -*-
import unittest
import time
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains

class CategoryTestCase(unittest.TestCase):
  def setUp(self):
    print("测试开始")
    self.driver = webdriver.Firefox()
    self.driver.implicitly_wait(20)
    self.base_url = "https://xdclass.net"
    self.driver.get(self.base_url)


  def tearDown(self):
    print("测试结束")
    #单个测试用例结束
    self.driver.quit()

  def test_menu(self):
    u"弹出菜单测试用例"
    driver = self.driver
    #跳转网页
    sleep(1)

    #定位到鼠标移动到上面的元素
    menu_ele = driver.find_element_by_css_selector("#banner_left_ul > a:nth-child(1) > li:nth-child(1) > span:nth-child(1)")

    #对定位到的元素执行鼠标移动到上面的操作
    ActionChains(driver).move_to_element(menu_ele).perform()
    sleep(2)
    #选中子菜单
    sub_meun_ele = driver.find_element_by_css_selector("#des > li:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > a:nth-child(1)")

    sub_meun_ele.click()
    sleep(2)


if __name__ == '__main__':
  unittest.main()

all_test.py

# -*- coding: UTF-8 -*-
import unittest
import HTMLTestRunner
import login_order ,category
import time

#创建测试集合  
def create_suite():
  print("测试开始")
  suite = unittest.TestSuite()
  suite.addTest(unittest.makeSuite(login_order.LoginOrderTestCase))
  suite.addTest(unittest.makeSuite(category.CategoryTestCase))
  return suite
   

if __name__ == '__main__':
  suite = create_suite()

  #文件名中加了当前时间,为了每次生成不同的测试报告
  file_prefix = time.strftime("%Y-%m-%d %H_%M_%S", time.localtime())

  #创建测试报告,此时这个文件还是空文件 wb 以二进制格式打开一个文件,只用于写入,如果文件存在则覆盖,不存在则创建
  fp = open("./"+file_prefix+"_result.html","wb")
  
  # stream定义一个测试报告写入的文件,title就是标题,description就是描述
  runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"小D课堂 测试报告",description=u"测试用例执行情况",verbosity=2)
  runner.run(suite)
  fp.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python的Template使用指南
Sep 11 Python
python中pycurl库的用法实例
Sep 30 Python
Python中 Lambda表达式全面解析
Nov 28 Python
python实现求最长回文子串长度
Jan 22 Python
python删除本地夹里重复文件的方法
Nov 19 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
对python周期性定时器的示例详解
Feb 19 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
解决python调用自己文件函数/执行函数找不到包问题
Jun 01 Python
Win10下用Anaconda安装TensorFlow(图文教程)
Jun 18 Python
基于python获取本地时间并转换时间戳和日期格式
Oct 27 Python
python使用pymysql模块操作MySQL
Jun 16 Python
基于Python3读写INI配置文件过程解析
Jul 23 #Python
Linux安装Python3如何和系统自带的Python2并存
Jul 23 #Python
Java爬虫技术框架之Heritrix框架详解
Jul 22 #Python
Python 绘制可视化折线图
Jul 22 #Python
python写文件时覆盖原来的实例方法
Jul 22 #Python
python中return不返回值的问题解析
Jul 22 #Python
Java byte数组操纵方式代码实例解析
Jul 22 #Python
You might like
实用函数10
2007/11/08 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
js 动态选中下拉框
2009/11/26 Javascript
Javascript中Eval函数的使用
2010/03/23 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
node.js不得不说的12点内容
2014/07/14 Javascript
ECMAScript6块级作用域及新变量声明(let)
2015/06/12 Javascript
详解node.js 下载图片的 2 种方式
2018/03/02 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
js实现3D旋转相册
2020/08/02 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
pycharm远程调试openstack的图文教程
2017/11/21 Python
Python回文字符串及回文数字判定功能示例
2018/03/20 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
Numpy中的mask的使用
2018/07/21 Python
Python随机生成身份证号码及校验功能
2018/12/04 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
解决pycharm中导入自己写的.py函数出错问题
2020/02/12 Python
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
2013年入党人员的自我鉴定
2013/10/25 职场文书
人力资源专员岗位职责
2014/01/30 职场文书
白血病募捐倡议书
2014/05/14 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
2015感人爱情寄语
2015/02/26 职场文书
文化大革命观后感
2015/06/17 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
申论不会写怎么办?教您掌握这6点思维和原则
2019/07/17 职场文书
SQL之各种join小结详细讲解
2021/08/04 MySQL
进阶篇之linux环境下安装MySQL数据库
2022/04/09 MySQL