Maison > Article > développement back-end > Comment mettre en œuvre l'intégration continue et les tests automatisés des requêtes dans FastAPI
Comment mettre en œuvre l'intégration continue et les tests automatisés des requêtes dans FastAPI
FastAPI est un framework Web hautes performances basé sur Python qui offre une expérience de développement d'API simple et facile à utiliser. Dans le même temps, l'intégration continue et les tests automatisés sont des maillons indispensables dans le développement de logiciels modernes, qui peuvent considérablement améliorer la qualité et l'efficacité du développement des projets. Cet article présentera comment mettre en œuvre l'intégration continue et les tests automatisés des requêtes dans FastAPI, et joindra des exemples de code correspondants.
Tout d'abord, nous devons utiliser un outil d'intégration continue tel que GitHub Actions, Jenkins ou Travis CI. Ces outils nous aident à automatiser la création, les tests et le déploiement de nos applications FastAPI.
Dans notre application FastAPI, nous devons utiliser pytest pour écrire et exécuter des tests automatisés. pytest est un framework de test Python puissant et facile à utiliser qui peut nous aider à rédiger des tests unitaires, des tests d'intégration et des tests de bout en bout fiables.
Voici le code d'un exemple d'application FastAPI :
from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"}
Dans le répertoire racine de notre projet, nous devons créer un répertoire appelé tests
et y écrire nos tests automatisés. tests
的目录,并在其中编写我们的自动化测试。
下面是一个测试root
端点的示例:
def test_root(): from fastapi.testclient import TestClient from main import app client = TestClient(app) response = client.get("/") assert response.status_code == 200 assert response.json() == {"message": "Hello World"}
在上面的示例中,我们使用了TestClient
来模拟一个HTTP客户端,发送一个GET请求到我们的root
端点,并断言返回的状态码和响应体是否符合预期。
为了在代码提交时自动运行测试和lint检查,我们可以使用持续集成工具提供的钩子或命令来调用pytest和lint工具。例如,在.github/workflows
目录中创建一个名为ci.yml
的文件,内容如下:
name: Continuous Integration on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: 3.9 - name: Install dependencies run: pip install -r requirements.txt - name: Run tests run: pytest - name: Run lint run: pylint main.py
在上面的示例中,我们配置了一个在代码提交到main
root
: rrreee
Dans l'exemple ci-dessus, nous avons utiliséTestClient
pour simuler un client HTTP et envoyer une requête GET à notre root point de terminaison et affirmer si le code d'état renvoyé et le corps de la réponse sont comme prévu. Afin d'exécuter automatiquement des tests et des vérifications lint lorsque le code est soumis, nous pouvons utiliser des hooks ou des commandes fournis par les outils d'intégration continue pour appeler les outils pytest et lint. Par exemple, créez un fichier nommé ci.yml
dans le répertoire .github/workflows
avec le contenu suivant : 🎜rrreee🎜Dans l'exemple ci-dessus, nous avons configuré une intégration continue travail qui s'exécute lorsque le code est validé dans la branche main
. Le travail contient une série d'étapes, notamment l'extraction du code, la configuration de l'environnement Python, l'installation des dépendances, l'exécution de tests et l'exécution de lint. 🎜🎜Il est à noter que ceci n'est qu'un exemple et ne s'applique pas à tous les projets. En fonction de la situation réelle, des modifications et ajustements appropriés peuvent être nécessaires. 🎜🎜Grâce à une intégration continue et à des tests automatisés, nous pouvons garantir que chaque soumission de code sera soumise à des tests automatisés et à une vérification des peluches, améliorant ainsi la qualité du code et l'efficacité du développement. La mise en œuvre d'une intégration continue et de tests automatisés des requêtes dans FastAPI peut nous aider à créer et à maintenir efficacement des applications API de haute qualité. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!