接口文档已经提供了,requests库、unittest单元测试框架也已经介绍过,笔者相信读者朋友已经可以独立编写接口自动化测试用例了。但是有一些细节,我们需要聊一下。比如我们写登录接口测试用例,用户名为空、密码为空、用户名错误、密码错误、用户名密码都正确,假设我们只编写这几条测试用例,我们一般的做法如下代码所示:

  1. # -*- coding: utf-8 -*-
  2. import requests
  3. import unittest
  4. from nose_parameterized import parameterized
  5. class BlogTest(unittest.TestCase):
  6. def setUp(self):
  7. self.url = "http://127.0.0.1:8000/login"
  8. self.username = 'admin'
  9. self.password = 'admin111111'
  10. def tearDown(self):
  11. pass
  12. def test_username_null(self):
  13. """用户名为空"""
  14. payload = {'username': '', 'password': self.password}
  15. self.result = requests.post(self.url, payload).json()
  16. # print(self.result)
  17. self.assertEqual(self.result['status'], 0)
  18. self.assertEqual(self.result['message'], 'username or password null')
  19. def test_password_null(self):
  20. """密码为空"""
  21. payload = {'username': self.username, 'password': ''}
  22. self.result = requests.post(self.url, payload).json()
  23. # print(self.result)
  24. self.assertEqual(self.result['status'], 0)
  25. self.assertEqual(self.result['message'], 'username or password null')
  26. def test_username_error(self):
  27. """用户名错误"""
  28. payload = {'username': 'admin1', 'password': self.password}
  29. self.result = requests.post(self.url, payload).json()
  30. # print(self.result)
  31. self.assertEqual(self.result['status'], 0)
  32. self.assertEqual(self.result['message'], 'username or password error')
  33. def test_password_error(self):
  34. """密码错误"""
  35. payload = {'username': self.username, 'password': 'admin1111111'}
  36. self.result = requests.post(self.url, payload).json()
  37. # print(self.result)
  38. self.assertEqual(self.result['status'], 0)
  39. self.assertEqual(self.result['message'], 'username or password error')
  40. def test_login_success(self):
  41. """用户名密码正确"""
  42. payload = {'username': self.username, 'password': self.password}
  43. self.result = requests.post(self.url, payload).json()
  44. # print(self.result)
  45. self.assertEqual(self.result['status'], 1)
  46. self.assertEqual(self.result['message'], 'login success')
  47. if __name__ == '__main__':
  48. unittest.main()

欢迎关注微信公众号:软件测试汪。软件测试交流群:809111560

28. Python编写自动化测试用例的更多相关文章

  1. 最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件

    今天笔者就要归纳总结下一整套测试流程,从无到有,实现零突破,包括如何编写测试用例,定时执行测试用例,查找最新生成的测试报告文件,自动发送最新测试报告邮件,一整套完整的测试流程.以后各位只要着重如何编写 ...

  2. (转载)最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件

    今天笔者就要归纳总结下一整套测试流程,从无到有,实现零突破,包括如何编写测试用例,定时执行测试用例,查找最新生成的测试报告文件,自动发送最新测试报告邮件,一整套完整的测试流程.以后各位只要着重如何编写 ...

  3. Python编写Appium测试用例(1)

    有段时间没有使用python编写测试用例了,很长时间以来,感觉appium这个测试工具确实不错,今天又重新拿起来,分享一下自己学习的一些用例,欢迎大家一起交流.学习! 1.登录客户端 #coding= ...

  4. selenium+python编写自动化脚本时,定位frame中对象操作

    在web应用中经常会出现frame嵌套的应用,假设页面上有A,B两个frame,其中B在A内,那么定位B中的内容则需要先到A,再到B.switchTo().frame方法可以把当前定位的主题切换到fr ...

  5. Python编写Appium测试用例(2)

    #coding=utf-8import os,sysimport unittestfrom appium import webdriverimport timefrom selenium.webdri ...

  6. Python自动化测试用例设计--自动化测试用例与手工测试用例区别与联系

    1. 前言 手工测试用例是针对手工测试人员,自动化测试用例是针对自动化测试框架,前者是手工测试用例人员应用手工方式进行用例解析,后者是应用脚本技术进行用例解析,两者最大的各自特点在于,前者具有较好的异 ...

  7. 用python和unittest编写app自动化测试用例

    import unittest import webdriver import time class Test(unittest.TestCase): @classmethod def setUpCl ...

  8. 用java和junit编写app自动化测试用例

    package myTest; import static org.junit.Assert.*; import io.appium.java_client.android.AndroidDriver ...

  9. (appium+python)UI自动化_09_unittest批量运行测试用例&生成测试报告

    前言 上篇文章[(appium+python)UI自动化_08_unittest编写测试用例]讲到如何使用unittets编写测试用例,并执行测试文件.接下来讲解下unittest如何批量执行测试文件 ...

随机推荐

  1. iphone-命令行编译之--xcodebuild

    参考 : https://www.cnblogs.com/xiaodao/archive/2012/03/01/2375609.html

  2. Spring中ApplicationContext加载机制和配置初始化

    Spring中ApplicationContext加载机制.        加载器目前有两种选择:ContextLoaderListener和ContextLoaderServlet.        ...

  3. apr not found,APR-util not found,pcre,

    1.下载所需软件包(此下载链接经由作者验证可使用): wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz wget http://arch ...

  4. g++ 之 -m64选项

    今天编译之前的项目,竟然报了下面的错误 usr/bin/ld: i386 architecture of input file `./proxycpp/soapRemoteDiscoveryBindi ...

  5. [题解]Magic Line-计算几何(2019牛客多校第三场H题)

    题目链接:https://ac.nowcoder.com/acm/contest/883/H 题意: 给你偶数个点的坐标,找出一条直线将这n个点分成数量相等的两部分 并在这条直线上取不同的两个点,表示 ...

  6. Selenium:八种元素定位方法

    前言: 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素.那么我们怎么来定位他们呢? 在学 ...

  7. web.xml中servlet mapping标签

    写了好多小项目后也没弄明白<url-pattern>的真正意义,写跳转的时候也是跳的三心二意的,今天查了一下web.xml的详细配置,看了看servlet-mapping的讲解,豁然开朗, ...

  8. HDU 6469 /// 二分

    题目大意: 分裂怪有1到n种等级, 第1级的分裂怪称为原子怪,它不会分裂,被击杀时会产生a[1]点经验: 而第k级的分裂怪死亡时则会分裂成a[k]个第k - 1级的分裂怪. 一个体力可以杀死一个怪物. ...

  9. ingress-nginx配置https文件访问

    1.先将证书文件上传至服务器特定目录.比如:/root/ssl 假设证书名称为:server.crt和server.key 2.现在主节点后台创建私密文件. kubectl create secret ...

  10. vue证明题X,vue设置集

    1.开发中的控制台tab格式警告隐藏 出现情况如图: 解决方案:找到此代码,注释掉 2.控制台error报告 出现情况如图 解决方案:找到此代码,替换,对浏览器中的警告进行隐藏 遇到就更