I can define two seperate sets of snakemake rules. However, the downstream analysing methods are same, which means that I will copy those commands twice.
Or, I can copy the raw input to test_method_1.fq and test_method_2.fq, but they will waste some space and are not elegant.
Think about it from the final output backwards; how can you indicate which method should be used to produce any particular downstream output? I'd suggest putting the method itself in the output filename, and then structuring your rules to work with that.
With that setup you could for example ask Snakemake for the output downstream.samp1_method_2.txt and it would go looking for samp1.fq in order to make samp1_method_2.bam, and so on. If the different methods are substantially different, having different rules makes sense, but if it just comes down to passing different arguments or something you could also just have a single rule and make it behave different depending on that wildcard.