首页 > 其他分享 >黑马测试学习记录(2)

黑马测试学习记录(2)

时间:2023-08-03 15:23:04浏览次数:32  
标签:记录 self 黑马 test 测试 print import unittest def

*Python 的unittest框架 TestCase

import unittest

class TestDemo(unittest.TestCase):
    def test_method1(self):
        print('测试方法1')
        
    def test_method2(self):
        print('测试方法2')

TestSuite TestRunner
import unittest

#实例化套件对象
suite = unittest.TestSuite()
#添加用例方法(两种写法)
suite.addTest(测试类名('方法名'))
或
suite.addTest(unittest.makeSuite(测试类名))
#实例化运行对象
runner = unittest.TextTestRunner()
#执行
runner.run(suite)
TestLoader
#使用TestLoader不使用TestSuite的情况:用例TestCase很多
import unittest
#实例化测试加载对象&添加用例(得到的是suite对象) 路径,文件名
suite = unittest.TestLoader().discover('./case','hm*.py')
#实例化运行对象
runner = unittest.TextTestRunner()
#执行
runner.run(suite)
Fixture 测试夹具
#方法级别 每个方法执行前后都调用
def setup(self):
    print('111')
    pass

def teardown(self):
    print('222')
    pass
#类级别 在每个测试类中所有方法执行前后自动调用 (最多各一次)

@classmethod
def setupClass(cls):
    pass
    
@classmethod
def teardownClass(cls):
    pass
Fixture使用 例子:测试登录
class Testlogin(unittest.TestCase):
    #方法级别 每个方法执行前后都调用
    def setup(self):
        print('输入网址')
        
    def teardown(self) -> None:
        print('关闭当前页面') 
        
    @classmethod
    def setupClass(cls) -> None:
        print('       打开浏览器')
        
    @classmethod
    def teardownClass(cls) -> None:
        print('       关闭浏览器')
       
    
    def test_1(self):
        print('输入正确的用户名密码')
        
    def test_2(self):
        print('输入错误的用户名密码')
    
    
理想的输出:(最重要的是顺序)
        打开浏览器
 输入网址          
 输入正确的用户名密码          
 关闭当前页面          
 输入网址
 输入错误的用户名密码          
 关闭当前页面          
        关闭浏览器          


*UnitTest断言 结果只有 TRUE FALSE 两种 最重要: self.assertEquals() self.assertIn() 断言 例子:测试登录
class Testlogin(unittest.TestCase):
    #方法级别 每个方法执行前后都调用
    def setup(self):
        print('输入网址')
        
    def teardown(self) -> None:
        print('关闭当前页面') 
        
    @classmethod
    def setupClass(cls) -> None:
        print('       打开浏览器')
        
    @classmethod
    def teardownClass(cls) -> None:
        print('       关闭浏览器')

    def test_1(self):
        print('输入正确的用户名密码')
        
    def test_2(self):
        print('输入错误的用户名密码')
        
    def test_user_ok(self):
        if login('admin','123456') == '登录成功':
            print('pass')
        else:
            print('fail')
        
    def test_user_ok_new(self):
        self.assertEqual('登录成功',login('admin','123456'))
                
    def test_user_error(self):
        self.assertEqual('登录失败',login('root','123456')) 
        
       
    *参数化 即用变量代替测试数据,再通过传参来测试 测试数据一般是json,代码读取json即可 unittest需要安装插件 pip install parameterized
import unittest
from parameterized import parameterized 
from tools import login

#组织测试数据 必须是 [(),(),()] 或 [[],[],[]] 顺序要和参数一致
data = [
    ('admin','123456','登录成功'),
    ('root','123456','登录失败'),
    ('admin','123123','登录失败')
]

#方法2
def build_data():
    with open('data.json', encoding = 'utf-8') as f:
        result = json.load(f)
        for i in result:
            data.append((i.get('username'),i.get('password'),i.get('expect')))
    return data

#用装饰器传参
class Testlogin(unittest.TestCase):
    @parameterized.expand(build_data())
    def test_login(self,username,password,expect):
        self.assertEqual(expect,login(username,password))


  *跳过 未完成/不满足条件,暂时跳过执行 装饰器方式,写在TestCase里
@unittest.skip('跳过的原因')
或
@unittest.skipIf(条件,'跳过的原因')
例如
import unittest

version = 30

class TestDemo(unittest.TestCase):
    @unittest.skip('跳过的原因')
    def test_method1(self):
        print('测试方法1')
    
    @unittest.skipIf(version < 30,'跳过的原因')
    def test_method2(self):
        print('测试方法2')
  
  *导出测试报告 --> "Export Test Result" 在pycharm导出为html、再去浏览器打开 导出测似报告 --> 使用第三方测试报告 HTMLTestRunner 由于HTMLTestRunner是一个第三方的unittest HTML报告库,用pip是死活安装不了的,得去网上下载HTMLTestRunner.py放到存放python源代码的Lib目录下
import unittest

from HTMLTestRunner import HTMLTestReport
from HTMLTestRunnerCN import HTMLTestReportCN #中文

#使用套件对象 加载对象 来添加用例方法
suite = unittest.defaultTestLoader.discover('.','hm_05_pal.py')

#实例化 运行对象是f
file = 'report.html'
with open(file,'wb') as f:
    runner = HTMLTestReport(f)
    #执行
    runner.run(suite)


标签:记录,self,黑马,test,测试,print,import,unittest,def
From: https://www.cnblogs.com/bbnltxdy/p/17603427.html

相关文章

  • radius 测试
    目前使用radclient来测试模拟计费报文模拟计费请求start报文radclient127.0.0.1autotesting123-facct_start.txtacct_start.txtUser-Name='[email protected]'Calling-Station-Id="00-1C-B3-AA-AA-AA"Packet-Type=4Packet-Dst-Port=1813NAS-Port=1782619......
  • kali渗透测试之三操作系统识别-nmap
    识别操作系统:    在确定目标主机在线后,应当识别他们使用的操作系统,这个阶段的工作称为识别操作系统(也称为操作系统指纹识别),识别操作系统的的方式分为两种:主动式和被动式。主动式识别工具向目标机器发送数据包,并根据目标的响应确定其使用的操作系统,这种方式的优点在于探测......
  • 【测试】SAS 编程技巧 - PROC SQL(二)
    上一节中,我们介绍了如何使用SQL创建、删除数据集、修改数据集结构,以及如何新增、删除和更新数据集的观测,所涉及到的内容都是对数据集的增、删、改的操作,从本节开始,我们将对SQL中最常见,也最灵活的查询操作进行详细的介绍。查询语句SQL的查询操作是通过SELECT语句实现的。S......
  • 【测试】SAS 编程技巧 - PROC SQL(一)
    SQL全称StrucuredQueryLanguage,即结构化查询语言,广泛应用于关系型数据库中。SASBase使用PROCSQL提供了对SQL的实现。PROCSQL过程可以帮助我们完成以下任务:创建数据集、视图和索引删除数据集、视图和索引修改数据集的结构更新数据集的观测从数据集或视图中获取......
  • web渗透测试(14):文件上传漏洞
    在本节中,我们将介绍如何使用文件上载功能来获取代码。 在Web应用程序(尤其是使用文件系统来确定应运行哪些代码的应用程序)中,如果您设法上传具有正确文件名的文件(通常取决于扩展名),则可以在服务器上执行代码。在本节中,我们将看到这些类型的攻击的基础知识。 首先,由于我们正在开......
  • web渗透测试(15):XML攻击
    在本节中,将详细介绍与XML相关的攻击。这些类型的攻击在Web服务和使用XPath从XML文件中检索配置设置的应用程序中很常见(例如,根据提供的组织名称了解他们需要使用哪些后端来验证用户)。 Example1<?phprequire_once("../header.php");?>Hello<?php$xml=simplexml_load_......
  • 《软件测试的艺术》原书第三版 - 第二章
    第二章软件测试的心理学和经济学即使一个看起来非常简单的程序,其可能的输入与输出组合可达到数百种甚至数千种,对所有的可能情况都设计测试用例是不切合实际的。软件测试的心理学“软件测试就是证明软件不存在错误的过程。”“软件测试的目的在于证明软件能够正确完成其预......
  • MyBatisPlus使用记录
    常用简单增删查改增:xxMapper.insert(xxDO)删:xxMapper.delete(new QueryWrapper<xx>().eq("xxx",xxx)...)查:注意在主键上加注解表明主键@TableId(“commodity_id”)xxMapper.selectById("xx")xxMapper.selectOne(new QueryWrapper<xx>())//查询单个结果,返回JOBOxx......
  • web渗透测试(13):LDAP 攻击
    在本节中,我们将介绍LDAP攻击。LDAP通常用作身份验证的后端,尤其是在单点登录(SSO)解决方案中。LDAP有自己的语法,我们将在以下示例中更详细地看到。 如有不懂什么是LDAP请查看 Example1在第一个示例中,使用您的用户名和密码连接到LDAP服务器。在这种情况下,LDAP服务器不会对您进......
  • play连接mongodb并进行查询测试
    环境准备1、 IP白名单分组添加2、 相关配置信息 application.conf增加 morphia.db.name=库名morphia.db.url=连接信息dependencies.yml增加require:-playmongo->playmongolatest.integration-org.mongodb->mongo-java-driver3.12.13-org.mongodb.m......