Files
gpt-pilot/pilot/test_main_e2e.py
Nicholas Albion b8965f527d notes and testing
2023-09-25 10:36:37 +10:00

62 lines
1.9 KiB
Python

import builtins
import pytest
from unittest.mock import patch
from dotenv import load_dotenv
load_dotenv()
from database.database import create_tables
from helpers.Project import Project
from test.mock_questionary import MockQuestionary
from .main import init, get_custom_print
def test_init():
# When
args = init()
# Then
for field in ['app_id', 'user_id', 'email']:
assert args[field] is not None
for field in ['workspace', 'step']:
assert args[field] is None
@pytest.mark.slow
@pytest.mark.uses_tokens
@pytest.mark.skip(reason="Uses lots of tokens")
@pytest.mark.parametrize("endpoint, model", [
# ("OPENAI", "gpt-4"),
# ("OPENROUTER", "openai/gpt-3.5-turbo"),
# ("OPENROUTER", "meta-llama/codellama-34b-instruct"),
("OPENROUTER", "google/palm-2-chat-bison"),
("OPENROUTER", "google/palm-2-codechat-bison"),
# TODO: See https://github.com/1rgs/jsonformer-claude/blob/main/jsonformer_claude/main.py
# https://github.com/guidance-ai/guidance - token healing
("OPENROUTER", "anthropic/claude-2"),
])
def test_end_to_end(endpoint, model, monkeypatch):
# Given
monkeypatch.setenv('ENDPOINT', endpoint)
monkeypatch.setenv('MODEL_NAME', model)
create_tables()
args = init()
builtins.print, ipc_client_instance = get_custom_print(args)
project = Project(args)
mock_questionary = MockQuestionary([
'Test App',
'A web-based chat app',
# 5 clarifying questions
'Users can send direct messages to each other but with no group chat functionality',
'No authentication is required at this stage',
'Use your best judgement',
'Use your best judgement',
'Use your best judgement',
])
# When
with patch('utils.questionary.questionary', mock_questionary):
project.start()