StockScreeners / test /screenipy_test.py
Hitendra1851's picture
.
a4c7650
raw
history blame contribute delete
No virus
5.33 kB
'''
* 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()
# Generate default configuration if not exist
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_ota_updater():
try:
OTAUpdater.checkForUpdate(proxyServer, VERSION)
assert (
"exe" in OTAUpdater.checkForUpdate.url or "bin" in OTAUpdater.checkForUpdate.url)
except StopIteration:
pass
def test_release_readme_urls():
global last_release
f = open('../src/release.md', 'r')
contents = f.read()
f.close()
failUrl = [f"https://github.com/pranjal-joshi/Screeni-py/releases/download/{last_release}/screenipy.bin",
f"https://github.com/pranjal-joshi/Screeni-py/releases/download/{last_release}/screenipy.exe"]
passUrl = [f"https://github.com/pranjal-joshi/Screeni-py/releases/download/{VERSION}/screenipy.bin",
f"https://github.com/pranjal-joshi/Screeni-py/releases/download/{VERSION}/screenipy.exe"]
for url in failUrl:
assert not url in contents
for url in passUrl:
assert url in contents
def test_if_changelog_version_changed():
global last_release
v = changelog.split(']')[-2].split('[')[-1]
assert float(v) > float(last_release)