
Jak posouváme hranice výzkumu
Přiblížit si něco tak moc, že uvidíte atomy? To v dnešní době není problém.
Přejít na obsah | Přejít k hlavnímu menu | Přejít k vyhledávání
Streamlit je framework, pomocí kterého můžete převést data na interaktivní webové aplikace. K dispozici je zdarma a jediné, co budete potřebovat, je znalost Pythonu. Nejvíce se využívá pro zpracování vědeckých dat, ale my si ukážeme, jak pomocí Streamlit prezentovat výsledky testování.
Streamlit by měl být součástí každého balíčkovacího systému, já budu používat pip. Více informací ohledně instalace najdete na oficálních stránkách framewroku.
Kromě Streamlitu si nainstalujem také Pandas pro práci s daty:
pip install streamlit
pip install pandas
Vytvoříme nový soubor hello-world.py
a vložíme do něj následující kód:
import streamlit as stst.markdown("Hello world")
Spuštěním si ověříme, že vše funguje, jak má:
streamlit run .\hello-world.py
Pro účely tohoto seriálu jsem vytvořil jednoduchou tabulku s výsledky testů (test-results.csv):
Vykreslení tabulky je jednoduché, pomocí Pandas načteme datový soubor a ten následně vykreslíme:
import pandas as pd
import streamlit as st
st.title("Test results")
df = pd.read_csv("test-results.csv")
st.dataframe(df)
Následně si vytvoříme funkci colorize
, ve které definujeme, jak budou buňky označené, a potom ji aplikujeme pomocí applymap
. Jako subset
použijeme názvy sloupců (df.columns
), tzn. hlavičku tabulky:
def colorize(val):
if val == "Passed":
return f'background-color: green; color:white'
if val == "Failed":
return f'background-color: red; color:white'
else:
return None
st.dataframe(df.style.applymap(colorize, subset=df.columns))
Nejdříve si vytvoříme seznam verzí, se kterým budeme dále pracovat. Pomocí df.columns
zjistíme názvy sloupců, které obsahují právě číslo verze. Jen přeskočíme první sloupec, protože ten číslo verze neosahuje:
versions = []
i = 0
for version in df.columns:
if i > 0:
versions.append(version)
i += 1
A můžeme začít tabulku filtrovat. Vytvoříme si select boxy s výsledky a verzemi:
filter_result = st.multiselect(
label='Result',
options=('Passed', 'Failed'),
default=('Passed', 'Failed')
)
filer_version = st.multiselect(
label='Version',
options=versions,
default=versions)
Chtěl jsem, aby ve výchozím stavu byly vybrané všechny hodnoty, proto jsem “naplnil” oba parametry options
a default
stejnými hodnotami.
Následně už nám stačí jen data přefiltrovat na základě vybraných hodnot. Použijeme k tomu metody pandas.DataFrame.loc
a pandas.DataFrame.iloc
, které nám umožňují přistupovat na jednotlivé buňky pomocí zadaných parametrů a pandas.DataFrame.isin
, která nám je pomůže odfiltrovat.
Aby se nám v tabulce stále zobrazoval i první sloupec s názvem testu, explicitně ho přidáme do filtrování verzí:
filer_version.append("Test")
df = df.loc[:, df.columns.isin(filer_version)]
Pro filtrování pomocí výsledků potřebujeme prohledávanou oblast omezit jen na sloupce s výsledky, proměnná num
udává, kolik sloupců máme na filtr použit:
num = -1 * len(versions)
df = df[df.iloc[:,num:].isin(filter_result).any(axis=1)]
Celý skript si můžete stáhnout zde: 01-table.py
Přiblížit si něco tak moc, že uvidíte atomy? To v dnešní době není problém.
Když před dvěma lety OpenAI představila ChatGPT, začaly se objevovat názory, že vývojáři a testeři přijdou o práci. Po dvou letech ale můžeme konstatovat, že tomu tak není. Kde se stala chyba a jaké nové výzvy nám AI představila?
Robot Framework je rozšířený testovací tool založený na pythonu, udržovaný komunitou a zdarma. Poměr cena/výkon tedy vychází velmi výhodně. Syntaxe Robot Frameworku je založená na klíčových slovech (keywords). Poradí si Robot Framework s BDD a s Gherkinem? Pojďme se na to podívat.
Děkujeme za váš zájem o odběr našeho newsletteru! Pro dokončení registrace je potřeba potvrdit vaše přihlášení. Na zadaný e-mail jsme vám právě zaslali potvrzovací odkaz. Klikněte prosím na tento odkaz, aby bylo vaše přihlášení dokončeno. Pokud e-mail nenajdete, zkontrolujte prosím složku nevyžádané pošty (spam) nebo složku hromadné pošty.