0

1.目前,我正在构建一个烧瓶应用程序,并且我还为单元测试做了一些实现。每次需要运行单元测试时,我都必须连接到端口http://127.0.0.1:5000/。然后使用命令 $pytest 打开另一个终端以运行单元测试。由于后端服务器运行时我无法输入命令,这就是我打开另一个终端的原因。运行 uni test 后,我​​可以成功获得测试结果。但是,当我尝试在 GitHub 操作上运行单元测试时,它会在运行服务器步骤停止。如果我不运行后端服务器,我将收到错误消息

      urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=5000): Max retries exceeded with url: /sign-up (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x118478160>: Failed to establish a new connection: [Errno 61] Connection refused'))

/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py:574:MaxRetryError

在处理上述异常的过程中,又出现了一个异常:

2.这是我在 Github Action 上的 .yml 文件中的代码。每次我推拉代码时,它都会运行这个脚本。然后我安装所有必要的依赖项并更改目录以运行后端服务器(我必须运行服务器才能进行测试)。但是,运行服务器http://127.0.0.1:5000/后,Github Hub Action 将停止。$pytest 不会被执行。我想知道如何解决这个问题,github 操作上是否有任何命令可以打开新终端并运行代码?我真的在努力解决这个问题。

name: UnitTesting
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install Python 3
        uses: actions/setup-python@v1
        with:
          python-version: 3.8
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirement.txt
          cd Flask-backend
          ./run
      - name: Run tests with pytest
        run: pytest 

这是我的单元测试代码:

import unittest
from app import app
import requests
from flask import request
import json


class Testapp(unittest.TestCase):

    def setUp(self):
        print('start this test')

    def tearDown(self):
        print('end this test\n')

    def test_login(self):
        print('test login')
        url = "http://localhost:5000/login"
        data = {'username': '123456@qq.com', 'password': '12345678'}
        data2 = {'username': '123456@qq.com', 'password': '123456'}
        response = requests.post(url=url, data=json.dumps(data))
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.text, json.dumps('123456@qq.com'))
        response = requests.post(url=url, data=json.dumps(data2))
        self.assertEqual(response.text, "Invalid login credentials")


    def test_sign(self):
        print('test sign')
        url = "http://localhost:5000/sign-up"
        data = {'password': '12345678', 'confirmpassword': '12345678', 'email': '123456@qq.com',
                'question': 'What is your mother name', 'answer': '111'}
        data2 = {'password': '12345678', 'confirmpassword': '12345678', 'email': '741917776@qq.com',
                 'question': 'What is your mother name', 'answer': '111'}
        response = requests.post(url=url, data=json.dumps(data))
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.text, 'username already exist')
        response = requests.post(url=url, data=json.dumps(data2))
        self.assertEqual(response.text, 'Add Sucessfully')


if __name__ == '__main__':
    unittest.main()
4

0 回答 0