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递归函数和河内塔问题
Apr 18 Python
Python实现string字符串连接的方法总结【8种方式】
Jul 06 Python
python实现海螺图片的方法示例
May 12 Python
python 用所有标点符号分隔句子的示例
Jul 15 Python
python判断自身是否正在运行的方法
Aug 08 Python
图解python全局变量与局部变量相关知识
Nov 02 Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 Python
mac使用python识别图形验证码功能
Jan 10 Python
Python动态导入模块和反射机制详解
Feb 18 Python
python实现马丁策略的实例详解
Jan 15 Python
解决Django transaction进行事务管理踩过的坑
Apr 24 Python
python基于tkinter制作下班倒计时工具
Apr 28 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
angular中的cookie读写方法
2017/08/02 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
微信小程序实现复选框效果
2018/12/28 Javascript
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
python中property和setter装饰器用法
2019/12/19 Python
Python decimal模块使用方法详解
2020/06/08 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
使用C#编写创建一个线程的代码
2013/01/22 面试题
如何提高MySql的安全性
2014/06/19 面试题
大学生年度自我鉴定
2013/10/31 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
不服从上级领导安排的检讨书
2014/09/14 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书
离婚被告代理词
2015/05/23 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
一文带你探究MySQL中的NULL
2021/11/11 MySQL
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS