postman接口测试—Restful接口开发与测试_postman restful接口

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

def test_add_user(self):
    form_data={'username':'zxw222','email':'zxw668@qq.com','groups':'http://127.0.0.1:8000/groups/2/'}
    r=requests.post(self.base_url+'/',data=form_data,auth=self.auth)
    result=r.json()

    self.assertEqual(result['username'],'zxw222')


def test_delete_user(self):
    r=requests.delete(self.base_url+'/11/',auth=self.auth)

    self.assertEqual(r.status_code,204)

def test_update_user(self):
    form_data={'email':'2222@163.com'}
    r=requests.patch(self.base_url+'/2/',auth=self.auth,data=form_data)
    result=r.json()

    self.assertEqual(result['email'],'2222@163.com')


def test_no_auth(self):
    r=requests.get(self.base_url)
    result=r.json()

    self.assertEqual(result['detail'],'Authentication credentials were not provided.')

class GroupTest(unittest.TestCase):
def setUp(self):
self.base_url=‘http://127.0.0.1:8000/groups’
self.auth=(‘51zxw’,‘zxw20182018’)

def test_group_developer(self):
    r=requests.get(self.base_url+'/7/',auth=self.auth)
    result=r.json()

    self.assertEqual(result['name'],'Developer')

def test_add_group(self):
    form_data={'name':'Pm'}
    r=requests.post(self.base_url+'/',auth=self.auth,data=form_data)
    result=r.json()

    self.assertEqual(result['name'],'Pm')

def test_update_group(self):
    form_data={'name':'Boss'}
    r=requests.patch(self.base_url+'/6/',auth=self.auth,data=form_data)
    result=r.json()

    self.assertEqual(result['name'],'Boss')

def test_detele_group(self):
    r=requests.delete(self.base_url+'/6/',auth=self.auth)

    self.assertEqual(r.status_code,204)

if name == ‘main’:
unittest.main()



#### Django自带测试模块


打开`api`目录下面的`tests`文件,编写如下测试代码


tests.py



from django.test import TestCase
import requests

Create your tests here.

class UserTest(TestCase):
def setUp(self):
self.base_url=‘http://127.0.0.1:8000/users’
self.auth=(‘51zxw’,‘xxxxx’)

def test_get_user(self):
    r=requests.get(self.base_url+'/1/',auth=self.auth)
    result=r.json()

    self.assertEqual(result['username'],'51zxw')
    self.assertEqual(result['email'],'zxw886@qq.com')

# @unittest.skip('skip add user')
def test_add_user(self):
    form_data={'username':'zxw222','email':'zxw668@qq.com','groups':'http://127.0.0.1:8000/groups/2/'}
    r=requests.post(self.base_url+'/',data=form_data,auth=self.auth)
    result=r.json()

    self.assertEqual(result['username'],'zxw222')

# @unittest.skip('skip test_delete_user')
def test_delete_user(self):
    r=requests.delete(self.base_url+'/11/',auth=self.auth)

    self.assertEqual(r.status_code,204)

def test_update_user(self):
    form_data={'email':'2222@163.com'}
    r=requests.patch(self.base_url+'/2/',auth=self.auth,data=form_data)
    result=r.json()

    self.assertEqual(result['email'],'2222@163.com')

def test_user_already_exists(self):
    form_data = {'username': 'zxw222', 'email': 'zxw668@qq.com', 'groups': 'http://127.0.0.1:8000/groups/2/'}
    r = requests.post(self.base_url + '/', data=form_data, auth=self.auth)
    result = r.json()
    #预期返回值:{"username":["A user with that username already exists."]}
    self.assertEqual(result['username'][0], 'A user with that username already exists.')

def test_no_auth(self):
    r=requests.get(self.base_url)
    result=r.json()

    self.assertEqual(result['detail'],'Authentication credentials were not provided.')

class GroupTest(TestCase):
def setUp(self):
self.base_url=‘http://127.0.0.1:8000/groups’
self.auth=(‘51zxw’,‘xxxxxx’)

def test_group_developer(self):
    r=requests.get(self.base_url+'/3/',auth=self.auth)
    result=r.json()

    self.assertEqual(result['name'],'Pm')

# @unittest.skip('skip test_add_group')
def test_add_group(self):
    form_data={'name':'Leader'}
    r=requests.post(self.base_url+'/',auth=self.auth,data=form_data)
    result=r.json()

    self.assertEqual(result['name'],'Leader')

def test_update_group(self):
    form_data={'name':'Boss'}
    r=requests.patch(self.base_url+'/6/',auth=self.auth,data=form_data)
    result=r.json()

    self.assertEqual(result['name'],'Boss')

def test_detele_group(self):
    r=requests.delete(self.base_url+'/6/',auth=self.auth)

    self.assertEqual(r.status_code,204)

运行方式:打开cmd使用如下命令来运行即可:



D:\django_restful>python manage.py test


上面命令是默认测试全部的用例,如果想测试部分用例则可以使用如下命令:


测试指定的测试类



D:\django_restful>python manage.py test api.tests.UserTest


测试具体的某一条具体用例



D:\django_restful>python manage.py test api.tests.UserTest.test_get_user



### 报错相关


1.迁移[数据库]( )时没有权限写入



File “C:\Users\jli75\AppData\Local\Programs\Python\Python37\lib\site-packages\MySQLdb\connections.py”, line 280, in query
_mysql.connection.query(self, query)
django.db.utils.InternalError: (7, “Error on rename of ‘.\httprunnermanager\#sql-1178_7.frm’ to ‘.\httprunnermanager\djcelery_taskstate.frm’ (Errcode: 13 - Permission denied)”)


原因:可能是杀毒软件通过阻止修改frm文件来解决此问题。通过在杀毒软件威胁防护高级选项中禁用按访问扫描,并杀毒软件设置为忽略这些扩展名来解决此问题


1. 迁移数据库时没有清除之前的迁移文件`migrations`



File “C:\Users\jli75\AppData\Local\Programs\Python\Python37\lib\site-packages\MySQLdb\connections.py”, line 280, in query
_mysql.connection.query(self, query)
_mysql_exceptions.OperationalError: (1050, “Table ‘djcelery_crontabschedule’ already exists”)


解决方案:删除`migrations`文件夹即可。


1. setting配置错误



raise MigrationSchemaMissing(“Unable to create the django_migrations table (%s)” % exc)
django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table ((1064, “You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘(6) NOT NULL)’ at line 1”))


解决方案:Django2.1不再支持MySQL5.5,必须5.6版本以上 可以使用如下命令 查看当前Mysql版本



mysql -V
mysql Ver 8.0.1-dmr for Win64 on x86_64 (MySQL Community Server (GPL))



> 
> **正在做测试的朋友可以进来交流,群里给大家整理了大量学习资料和面试题项目简历等等....** 


![img](https://img-blog.csdnimg.cn/img_convert/ef8f4f88b780cf73b9789d6e2c166283.png)
![img](https://img-blog.csdnimg.cn/img_convert/1521ac9f67e8b72533697899c676ed2e.png)
![img](https://img-blog.csdnimg.cn/img_convert/1b876d2e77e4a218e2f0ff4487930395.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618631832)**

-1715818532260)]
[外链图片转存中...(img-zPjzyheG-1715818532260)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618631832)**

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值