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()