|
''' |
|
* Project : Screenipy |
|
* Author : Pranjal Joshi |
|
* Created : 29/04/2021 |
|
* Description : Automated Test Script for Screenipy |
|
''' |
|
|
|
|
|
import pytest |
|
import sys |
|
import os |
|
import numpy as np |
|
import pandas as pd |
|
import configparser |
|
import requests |
|
import json |
|
import platform |
|
|
|
sys.path.append(os.path.abspath('../src')) |
|
import classes.ConfigManager as ConfigManager |
|
from classes.Changelog import changelog |
|
from screenipy import * |
|
last_release = 0 |
|
configManager = ConfigManager.tools() |
|
|
|
|
|
|
|
|
|
def test_generate_default_config(mocker, capsys): |
|
mocker.patch('builtins.input', side_effect=['5','0', '\n']) |
|
with pytest.raises(SystemExit): |
|
configManager.setConfig(ConfigManager.parser, default=True) |
|
out, err = capsys.readouterr() |
|
assert err == '' |
|
|
|
|
|
def test_if_release_version_increamented(): |
|
global last_release |
|
r = requests.get( |
|
"https://api.github.com/repos/pranjal-joshi/Screeni-py/releases/latest") |
|
last_release = float(r.json()['tag_name']) |
|
assert float(VERSION) > last_release |
|
|
|
|
|
def test_option_0(mocker): |
|
try: |
|
mocker.patch('builtins.input', side_effect=['0', TEST_STKCODE, 'y']) |
|
main(testing=True) |
|
assert len(screenResults) == 1 |
|
except StopIteration: |
|
pass |
|
|
|
|
|
def test_option_1(mocker): |
|
try: |
|
mocker.patch('builtins.input', side_effect=['5', '1', 'y']) |
|
main(testing=True) |
|
assert len(screenResults) > 0 |
|
except StopIteration: |
|
pass |
|
|
|
|
|
def test_option_2(mocker): |
|
try: |
|
mocker.patch('builtins.input', side_effect=['5', '2', 'y']) |
|
main(testing=True) |
|
assert len(screenResults) > 0 |
|
except StopIteration: |
|
pass |
|
|
|
|
|
def test_option_3(mocker): |
|
try: |
|
mocker.patch('builtins.input', side_effect=['5', '3', 'y']) |
|
main(testing=True) |
|
assert len(screenResults) > 0 |
|
except StopIteration: |
|
pass |
|
|
|
|
|
def test_option_4(mocker): |
|
try: |
|
mocker.patch('builtins.input', side_effect=['5', '4', '7', 'y']) |
|
main(testing=True) |
|
assert len(screenResults) > 0 |
|
except StopIteration: |
|
pass |
|
|
|
|
|
def test_option_5(mocker): |
|
try: |
|
mocker.patch('builtins.input', side_effect=['5', '5', '30', '70']) |
|
main(testing=True) |
|
assert len(screenResults) > 0 |
|
except StopIteration: |
|
pass |
|
|
|
|
|
def test_option_6(mocker): |
|
try: |
|
mocker.patch('builtins.input', side_effect=['5', '6', '1', 'y']) |
|
main(testing=True) |
|
assert len(screenResults) > 0 |
|
except StopIteration: |
|
pass |
|
|
|
|
|
def test_option_7(mocker): |
|
try: |
|
mocker.patch('builtins.input', side_effect=['5', '7', '1', '7', 'y']) |
|
main(testing=True) |
|
assert len(screenResults) > 0 |
|
except StopIteration: |
|
pass |
|
|
|
|
|
def test_option_8(mocker, capsys): |
|
try: |
|
mocker.patch('builtins.input', side_effect=['5', |
|
'8', |
|
str(configManager.period), |
|
str(configManager.daysToLookback), |
|
str(configManager.duration), |
|
str(configManager.minLTP), |
|
str(configManager.maxLTP), |
|
str(configManager.volumeRatio), |
|
str(configManager.consolidationPercentage), |
|
'y', |
|
'y', |
|
]) |
|
with pytest.raises((SystemExit, configparser.DuplicateSectionError)): |
|
main(testing=True) |
|
out, err = capsys.readouterr() |
|
assert err == 0 or err == '' |
|
except StopIteration: |
|
pass |
|
|
|
|
|
def test_option_9(): |
|
configManager.getConfig(ConfigManager.parser) |
|
assert configManager.duration is not None |
|
assert configManager.period is not None |
|
assert configManager.consolidationPercentage is not None |
|
|
|
|
|
def test_option_12(mocker, capsys): |
|
try: |
|
mocker.patch('builtins.input', side_effect=['5','12']) |
|
with pytest.raises(SystemExit): |
|
main(testing=True) |
|
out, err = capsys.readouterr() |
|
assert err == '' |
|
except StopIteration: |
|
pass |
|
|
|
def test_option_14(mocker): |
|
try: |
|
mocker.patch('builtins.input', side_effect=['14', '0', 'y']) |
|
main(testing=True) |
|
assert len(screenResults) > 0 |
|
except StopIteration: |
|
pass |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_if_changelog_version_changed(): |
|
global last_release |
|
v = changelog.split(']')[-2].split('[')[-1] |
|
assert float(v) > float(last_release) |
|
|