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迭代器的使用方法实例
Nov 21 Python
让python同时兼容python2和python3的8个技巧分享
Jul 11 Python
python实现文件快照加密保护的方法
Jun 30 Python
Flask框架的学习指南之开发环境搭建
Nov 20 Python
教大家玩转Python字符串处理的七种技巧
Mar 31 Python
Python算法之图的遍历
Nov 16 Python
Python实现判断字符串中包含某个字符的判断函数示例
Jan 08 Python
Python OpenCV 使用滑动条来调整函数参数的方法
Jul 08 Python
python文件绝对路径写法介绍(windows)
Dec 25 Python
django美化后台django-suit的安装配置操作
Jul 12 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
Dec 04 Python
Python可视化学习之seaborn绘制矩阵图详解
Feb 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
PHP 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
深入PHP异步执行的详解
2013/06/03 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
PHP之header函数详解
2021/03/02 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
js 文件引入实现代码
2010/04/23 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
JSONP之我见
2015/03/24 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
详解JS函数防抖
2020/06/05 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
Python操作MySQL数据库的方法
2018/06/20 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
Python 项目转化为so文件实例
2019/12/23 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
缴纳养老保险的证明
2014/01/10 职场文书
土木工程求职信
2014/05/29 职场文书
酒店端午节活动方案
2014/08/26 职场文书
购房个人委托书范本
2014/10/11 职场文书
初三英语教学计划
2015/01/23 职场文书
英文自荐信范文
2015/03/25 职场文书
《迟到》教学反思
2016/02/24 职场文书