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发送伪造的arp请求
Jan 09 Python
python解析xml文件操作实例
Oct 05 Python
Python判断文件和字符串编码类型的实例
Dec 21 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
Pandas实现dataframe和np.array的相互转换
Nov 30 Python
从训练好的tensorflow模型中打印训练变量实例
Jan 20 Python
python时间与Unix时间戳相互转换方法详解
Feb 13 Python
Python日期格式和字符串格式相互转换的方法
Feb 18 Python
深入理解Tensorflow中的masking和padding
Feb 24 Python
python中scrapy处理项目数据的实例分析
Nov 22 Python
PyQt 如何创建自定义QWidget
Mar 24 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
在线增减.htpasswd内的用户
2006/10/09 PHP
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
小文件php+SQLite存储方案
2010/09/04 PHP
PHP+MySQL投票系统的设计和实现分享
2012/09/23 PHP
php实现字符串反转输出的方法
2015/03/14 PHP
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
JS+JSP checkBox 全选具体实现
2014/01/02 Javascript
JS实现网页背景颜色与select框中颜色同时变化的方法
2015/02/27 Javascript
PHP7新特性简述
2017/06/11 Javascript
简单谈谈原生js的math对象
2017/06/27 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
2017/10/26 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
vue通过过滤器实现数据格式化
2020/07/20 Javascript
vue3中轻松实现switch功能组件的全过程
2021/01/07 Vue.js
Python里disconnect UDP套接字的方法
2015/04/23 Python
python实现人民币大写转换
2018/06/20 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
2021/02/22 Python
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
五十岁生日宴会答谢词
2014/01/15 职场文书
十月份红领巾广播稿
2014/01/22 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
护理学院专科毕业生求职信
2014/06/28 职场文书
长城导游词
2015/01/30 职场文书
雷锋之歌观后感
2015/06/10 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
SQL Server内存机制浅探
2022/04/06 SQL Server
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript