python - 试图确定正确的 Python/Django 单元测试解决方案 - unittest vs pytest vs “manage.py test” vs ...?
问题描述
我是 Python 和 Django 的新手,并且正在为其中一个或两个编写单元测试,并且正在尝试浏览测试解决方案的环境以及解决一些运行时错误(即“应用程序尚未加载”时使用“ python -m unittest 测试/tests.py")。我已经阅读论坛帖子和教程几个小时了,我似乎最终得到的问题多于答案。
作为敏捷方法培训的一部分,我正在尝试做的是在 Django 模型上实现基本的 get/display/show 功能并编写测试显示序列化程序正在根据数据库中的记录(或由工厂和伪造者,这是我试图解决的另一层复杂性)。我被建议使用 AssertEquals 语句来根据给定数据库行中包含的内容验证 JSON 序列化程序输出,后者由伪造者生成,通过工厂插入并存储在变量中以供 AssertEquals 在比较值时使用。我对逻辑以及如何编写它有一个想法,但是我目前正被错误绊倒,同时试图找出最好的测试框架是什么以及哪些命令,
到目前为止,我尝试过的是:
使用 pip 在我的 venv 中安装大量模块。这包括 Requests、faker、factory_boy、unittest 和 pytest。
使用“python manage.py test”、“python -m unittest tests/tests.py”、“pytest tests/tests.py”运行测试
- 似乎“python manage.py test”产生了最好的结果。Unittest 和 pytest 都返回 django.core.exceptions.AppRegistryNotReady:应用程序尚未加载。
创建一个 RequestsClient() 对象来测试 API 页面。就我的尝试而言,这是成功的,尽管它只包括验证 HTTP 200 OK 状态和 application/json 的内容类型。
这是我的 tests/tests.py 文件(更改了一些细节以使我的公司匿名)。该程序的目的是从 GitHub 收集和分析用户统计信息,因此引用了拉取请求(Null 是因为 PR 表/模型尚未构建 - 一旦准备好,它将是一个外键)。
import pytest
import unittest
from django.test import TestCase, Client
from rest_framework.test import RequestsClient
from db.models import Associate
req_client = RequestsClient()
req_response = req_client.get('http://127.0.0.1/api/Associates/')
assert req_response.status_code == 200
assert req_response.headers['content-type'] == "application/json"
class AssocTest(TestCase):
def setUp(self):
Associate.object.create(assoc_id='JD123456', first_name='John', last_name='Doe', email='john.doe@company.com', comments=Null, comment_count=5, pull_requests=Null, pr_count=4, reviews=3)
pass
def tearDown(self):
Associate.object.dispose()
pass
我知道这可能是一个生死攸关的问题,但我感谢您对新手的帮助和耐心。
解决方案
推荐阅读
- excel - 如何在打开文件时自动删除应用的过滤器而不删除过滤器功能
- java - 使用 Drools 7.21 时的布尔值
- python - 使用 pyinstaller 创建可执行文件时 python 的 plyer 库出现问题
- python - 如何修复现有 Pycharm 项目的 pip
- python - 将 JSON 文件写入一个 txt 文件,每个 JSON 数据占一行
- java - 在我的 for 循环中没有看到第二类的方法引用
- vue.js - Vuejs 部署到 IIS 默认网站应用程序
- postgresql - PostgreSQL - 我如何在一天中的某个小时之前求和?
- spring-boot - 来自 ErrorController 的 Spring 重定向
- git - 如何知道开发人员是否在 Git 的主题分支中进行了变基