func (sc *Scenario) teardown(logger *log.Logger) *Suite {
	suite := NewFromRaw(sc.RawSuite, sc.globals, sc.jar, logger)
	suite.tests = suite.tests[len(suite.tests)-len(sc.RawSuite.Teardown):]
	i := 0
	executor := func(test *ht.Test) error {
		i++
		test.SetMetadata("SeqNo", fmt.Sprintf("Teardown-%02d", i))
		if test.Result.Status == ht.Bogus || test.Result.Status == ht.Skipped {
			return nil
		}
		if !sc.RawSuite.tests[i-1].IsEnabled() {
			test.Result.Status = ht.Skipped
			return nil
		}
		test.Run()
		return nil
	}
	suite.Iterate(executor)
	sc.jar = suite.Jar
	sc.globals = suite.FinalVariables
	return suite
}
teardown runs the Teardown tests of sc.
package suite
import (
	"bufio"
	"encoding/csv"
	"errors"
	"fmt"
	"io"
	"io/ioutil"
	"log"
	"math/rand"
	"os"
	"sort"
	"strconv"
	"strings"
	"sync"
	"time"
	"github.com/vdobler/ht/cookiejar"
	"github.com/vdobler/ht/errorlist"
	"github.com/vdobler/ht/ht"
	"github.com/vdobler/ht/internal/bender"
)
type Scenario struct {
	Name string
	*RawSuite
	Percentage int
	MaxThreads int
	OmitChecks bool
	globals map[string]string
	jar     *cookiejar.Jar
}
func (sc *Scenario) setup(logger *log.Logger) *Suite {
	suite := NewFromRaw(sc.RawSuite, sc.globals, sc.jar, logger)
	suite.tests = suite.tests[:len(sc.RawSuite.Setup)]
	i := 0
	executor := func(test *ht.Test) error {
		i++
		test.SetMetadata("SeqNo", fmt.Sprintf("Setup-%02d", i))
		if test.Result.Status == ht.Bogus || test.Result.Status == ht.Skipped {
			return nil
		}
		if !sc.RawSuite.tests[i-1].IsEnabled() {
			test.Result.Status = ht.Skipped
			return nil
		}
		test.Run()
		if test.Result.Status > ht.Pass {
			return ErrAbortExecution
		}
		return nil
	}
	suite.Iterate(executor)
	sc.jar = suite.Jar
	sc.globals = suite.FinalVariables
	return suite
}