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控制台显示时钟的示例
Feb 24 Python
wxpython中利用线程防止假死的实现方法
Aug 11 Python
python编程开发之textwrap文本样式处理技巧
Nov 13 Python
PyCharm在win10的64位系统安装实例
Nov 26 Python
python 列表,数组,矩阵两两转换tolist()的实例
Apr 04 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
pycharm远程linux开发和调试代码的方法
Jul 17 Python
python之pymysql模块简单应用示例代码
Dec 16 Python
python读取raw binary图片并提取统计信息的实例
Jan 09 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
Mar 09 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
May 12 Python
Python实现ElGamal加密算法的示例代码
Jun 19 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
Add Formatted Text to a Word Document
2007/06/15 Javascript
javascript动态加载实现方法一
2012/08/22 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
前端微信支付js代码
2016/07/25 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
vue2 全局变量的设置方法
2018/03/09 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
基于Pandas读取csv文件Error的总结
2018/06/15 Python
python代码如何注释
2020/06/01 Python
Python爬虫如何破解JS加密的Cookie
2020/11/19 Python
CSS3 二级导航菜单的制作的示例
2018/04/02 HTML / CSS
html5利用canvas绘画二级树形结构图的示例
2017/09/27 HTML / CSS
Hunkemöller西班牙:欧洲最大的内衣连锁店
2018/08/15 全球购物
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
金融行业务员的自我评价
2013/12/13 职场文书
办护照工作证明范本
2014/01/14 职场文书
《画》教学反思
2014/04/14 职场文书
读书伴我成长演讲稿
2014/05/07 职场文书
上课睡觉检讨书300字
2014/11/18 职场文书
小学重阳节活动总结
2015/03/24 职场文书
js实现自动锁屏功能
2021/06/02 Javascript
MySQL分区表管理命令汇总
2022/03/21 MySQL
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android